jQuery元素构造函数 - 这是推荐的方式?
当您创建的HTML传递到jQuery的元素,有一些可以使用的格式,例如:jQuery元素构造函数 - 这是推荐的方式?
$("<span>").addClass("foo")
$("<span class=\"foo\"></span>")
等等
有一个风格,工作比别人做得更好?
我以前认为没有什么区别,但我一直在寻找这HKS张贴在this other question代码,而事实证明,在IE一些不一致的地方。为了调查,我放了一张桌子。
在这里的结果看看: http://fisher.spadgos.com/stuff/jqueryConstructors.html
基本上它是这样的事情:
$('<a class="foo">').length; // in firefox, this == 1. IE, this == 0
$('<br></br>').length; // Firefox == 1; IE == 2
在IE它非常不一致,但在Firefox和Chrome的所有形式的工作得很好。
这是在所有浏览器一致的唯一方法是这些:
$("<foo />") $("<foo>")
创建DOM元素从原始的HTML所提供的字符串上即时。
简单元素,而属性,例如,
"<div />"
,经由document.createElement
创建。通过将字符串分配给div
元素的.innerHTML
属性来分析所有其他情况。 HTML字符串不能包含div内无效的元素,例如html,head,body或title元素。所有HTML必须是良好的,否则它可能无法在所有浏览器正常工作。这包括
$("<span>")
可能无法正常工作,但$("<span/>")
将会(注意XML样式的斜杠)。
我不能肯定地说,但性能明智的第二个选项:
$("<span class=\"foo\"></span>");
一般比较好,因为没有多余的字符串连接(即加入了“类=‘富’”为匹配span标签
您还可以使用默认的FF/IE/OPERA/ETC源查看器在源代码中查看它,而您需要查看DOM的实时视图以查看结果这个:
$("<span>").addClass("foo")
选择第二个选项 - 静态HTML携带一个小的性能优势,但更重要的是严重的可读性好处,这将帮助你,当你最终击中“查看源文件”,试图找出原因,根据需要您的元素没有显示出来。
首先创建一个像一个div元素如下:
<div id="test"></div>
然后,你可以很容易地做到这一点使用下面的代码:
$("<span class=\"foo\"></span>").appendTo("div#test");
您也可以使用任何其他HTML元素,如表代替的div。
希望这会帮助你。
按预期在IE对于未被预期具有结束标记元素不工作:'区域,BR,山口,小时,IMG,输入,链接,间位,PARAM,title'。是的,你可以忽略结束标签,但使用短版本更安全。 – nickf 2009-08-25 11:28:21
你越来越不可预测的结果,因为你使用的HTML格式不正确。
是不正确的HTML 4.并且您的锚点未关闭。这就是说,它可能仍然是一个错误,但畸形的性质很大程度上使结果无效。 – cletus 2009-08-25 04:29:40
是的,但如果你这样做:'$( “”)',然后,将工作。我只是表明在IE中结果有点不可预测。 – nickf 2009-08-25 04:33:58
看起来像你看到的是浏览器如何“清理”格式不正确的HTML。他们这样做的方式不同,这是使用“适当”标记的重要原因之一。如果他们处理不同的文档类型,他们也可能做不同的处理; “怪癖模式”就是其中之一,但它确实更复杂。 不遵守jQuery的文档的指导方针可以创造一些非常讨厌的错误,因为你的HTML可以让你重新编写的。这会导致Ajax页面在不同浏览器中以奇怪的方式破解。 – ndp 2009-08-25 15:12:08