使用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插件的种类 1、封装对象方法 这种插件是将对象方法封装起来,用于对通过选择器获取的jQuery对象进...
扩展jQuery插件和方法的作用是非常强大的,它可以节省大量开发时间。 入门 编写一个jQuery插件开始于给...
最近项目中需要实现3D图片层叠旋转木马切换的效果,于是用到了jquery.roundabout.js。 兼容性如图: ht...
一、什么是deferred对象? 开发网站的过程中,我们经常遇到某些耗时很长的javascript操作。其中,既有异...
AMD 模块 AMD(异步模块定义,Asynchronous Module Definition)格式总体的目标是为现在的开发者提供一...