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

nme*_*ego 10 javascript jquery dom dtd syntax-error

我有以下javascript:

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

上面的javascript引发以下错误消息:

Error: SyntaxError: DOM Exception 12
Run Code Online (Sandbox Code Playgroud)

这个工作没有错误:

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
});
Run Code Online (Sandbox Code Playgroud)

我检查了以下问题,但答案没有明确说明正确的原因为什么.

这是我的DTD:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Run Code Online (Sandbox Code Playgroud)

问题:为什么$('<input/>')并且$('<input>')抛出所述异常而$('<li/>')不是问题?

Hei*_* Yu 11

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

即使您没有加载jQuery,该功能$()现在也被谷歌Chrome定义为类似的东西querySelectorAll().

这个函数只接受一个CSS选择器作为参数,而不是像jQuery那样的任意HTML $().

来自文档:

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

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

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

http://jsfiddle.net/S6d6w/