使用JQuery创建链接的最佳方式?

前端之家收集整理的这篇文章主要介绍了使用JQuery创建链接的最佳方式?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我们使用jqGrid自定义格式化程序在我们的JQuery网格中输出链接。我们使用String操作构建链接
var s = "<a title=\"Blah\" href=\"javascript:BlahFunc('" + options.rowId + "')\">This is blah<a>";

使用JQuery创建链接(和其他表单元素)有更多“聪明”的方式吗?

解决方法

正如Steven Xu正确提到的那样,插入HTML字符串比操纵DOM更快,这就是为什么我建议使用字符串操作而不是jQuery创建元素。

你只需要改变这个:

var s = "<a title=\"Blah\" href=\"javascript:BlahFunc('" + options.rowId +
        "')\">This is blah<a>";

到这个:

var s = "<a title=\"Blah\" href=\"javascript:BlahFunc('" + options.rowId +
        "')\">This is blah</a>";

(在字符串末尾用< a>关闭< a>标签)。

字符串操作比DOM操作快得多(参见例如this)。此外,如果您尝试在大型HTML代码中插入DOM片段,那么区别将更大。 DOM DocumentFragments的使用可以稍微提高性能,但字符串连接的使用是最快的方式。

所有其他答案都没有了解您使用它的上下文(jqGrid自定义格式化程序)的知识。我试图解释为什么在你的情况下很重要。

由于性能优势,jqGrid首先将网格HTML代码片段作为字符串数组构建,然后根据.join(”)从字符串数组构建一个字符串,并将结果插入到表体中只要。 (我想你几乎总是推荐使用gridview:true jqGrid选项)。 jqGrid custom formatter是jqGrid在构建网格(表)体时使用的回调函数自定义格式化程序必须作为结果返回HTML代码片段作为字符串。字符串将与构建网格(表)的主体的其他字符串连接。

因此,如果您将当前的代码从纯字符串操作更改为jQuery DOM操作,并将结果转换为字符串(需要作为自定义格式的结果返回),那么代码将会缓慢运行,您将无法获得其他优势*。

使用字符串操作的唯一真正的缺点是验证您构建的代码的问题。例如,没有关闭标签< / a>的代码的使用是一个潜在的问题,你可以拥有。在大多数情况下,问题将在插入DOM片段时解决,但有时您可能会收到真正的问题。所以你应该测试你插入的代码非常仔细。

再说一句:如果要跟随unobtrusive JavaScript style,可以使用“#”作为href属性的值,并将gridComplete或loadComplete事件处理程序中的相应点击事件绑定。如果您在执行此操作时遇到问题,您可以打开一个新问题,我将尝试为您编写相应的代码示例。

注意:我认为最好的实现方式是使用onCellSelect或beforeSelectRow,而不是将每个< a>列中的元素。我建议阅读以下答案,详细信息:this oneanother oneone more old answer

猜你在找的jQuery相关文章