为什么我的jQuery模板方法不再适用于jQuery 1.9.1?

时间:2013-04-04 12:38:40

标签: javascript jquery templating

请看这个小提琴:http://jsfiddle.net/VdZJx/2/

$(function()
{
    var li = $($("#link-item-template").html()).find("a").attr({
        href: "javascript:;"
    }).html("Toggle");

    $("ul").append(li);
});

这是一种模板化的方法,我已经看到甚至其他一些lib用于存储和生成html模板。

如果您使用jQuery版本1.9.1,请运行此演示并观察控制台,当您尝试从$().html()生成新的jQuery对象时,Sizzle会引发以下错误。参见:

  

未捕获错误:语法错误,无法识别的表达式:< li>           < input type =“checkbox”/> &LT a取代;< / A>       < /锂>

我该怎样做才能让它再次发挥作用?

1 个答案:

答案 0 :(得分:1)

由于您没有真正获得正确的元素,但脚本标记的内容为字符串(恰好是HTML),HTML字符串中添加了大量的空格和换行符,您需要修改它以使其成为它作为一个有效的选择器:

$($.trim($("#link-item-template").html()))

FIDDLE