每当您使用 $ 选择时,您都会获得一组元素,并且您对选择执行的每个操作都将在所有元素上执行。所以$("pre").addClass("myClass")
会将类“myClass”添加到文档中的所有前置元素。此外,该操作会返回它自己的选择,因此您可以像这样链接操作:
$("pre").addClass("myClass").css("font-weight","bolder")
这将添加类并将 CSS 属性 font-weight 设置为粗体
返回值时例外。例如,当执行类似$("input").val()
第一个输入元素的值的操作时,将返回
因此,在您的特定情况下,您需要选择所有前置元素添加类和突出显示
$.fn.addTemplateSetup(function () {
this.find('pre')
.addClass("brush: plain")
.each(function () {
SyntaxHighlighter.highlight({}, this);
});
});
但是,由于您的课程看起来更像您尝试应用一些内联样式,因此我也包含了如何做到这一点
$.fn.addTemplateSetup(function () {
this.find('pre')
.css('brush', 'plain')
.each(function () {
SyntaxHighlighter.highlight({}, this);
});
});
我把 addClass/css 放在 each 之前的原因是 addClass/css 会在它应用到的选择上调用 each。如果在 each 函数中使用 addClass ,它将在选择一个元素时调用 each ,我希望这比迭代整个集合两次要慢。在这两种情况下,每个元素的访问次数都是相同的,我会在评论中反对任何一个