微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用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

原文地址:https://www.jb51.cc/jquery/182427.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐