错误:SyntaxError:使用jQuery创建标记时的DOM异常12

时间:2013-03-30 03:22:23

标签: javascript jquery dom syntax-error dtd

我有以下javascript:

var orderItemQuantity = $('<input/>', {
    type: 'hidden',
    name: 'order_detail[][quantity]',
    value: itemQuantity
});

上面的javascript会抛出以下错误消息:

Error: SyntaxError: DOM Exception 12

这个没有错误:

var newListItem = $('<li/>', {
    html:
    $('#item_name_'+itemId).text() +
    '(' + $('#item_quantity_' + itemId).val() +')' +
    '<a onclick="removeItem(' + itemId + ')">Delete this</a>' +
    '<input type="hidden" name="order_detail[][item_id]" value="' + itemId + '"/>',
    id: itemId
});

我检查了以下question,但答案没有明确指出正确的原因为什么。

这是我的DTD:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

问题:为什么$('<input/>')$('<input>')$('<li/>')不成问题时抛出所述异常?

1 个答案:

答案 0 :(得分:11)

确保在第一个示例中加载了jQuery。

即使您没有加载jQuery,Google Chrome现在将函数$()定义为与querySelectorAll()类似的内容。

此函数仅接受CSS选择器作为参数,而不是像jQuery $()那样的任意HTML。

来自文档:

  

SYNTAX_ERR代码12指定了无效或非法字符串;   例如,设置CSSStyleRule的selectorText属性   CSS值无效。

该函数期待一个CSS选择器,你给它HTML,所以它给出了语法错误。

看到这个小提琴,它运作得很好:

http://jsfiddle.net/S6d6w/