2013-03-30 9 views
8

Mam następujący skrypt:Błąd: SyntaxError: DOM Exception 12 na Tag Creation jQuery

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

Powyższy JavaScript rzuca się następujący komunikat o błędzie:

Error: SyntaxError: DOM Exception 12 

Ten działa bez błędu:

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 
}); 

Sprawdziłem następujące question ale odpowiedź nie określił c learly właściwy powód DLACZEGO.

Oto moja DTD:

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

Pytanie: Dlaczego $('<input/>') i $('<input>') rzucać wspomniany wyjątek podczas $('<li/>') nie jest problemem?

Odpowiedz

9

Upewnij się, że w pierwszym przykładzie załadowano jQuery.

Nawet jeśli nie załadowano jQuery, funkcja $() jest teraz definiowana przez Google Chrome jako coś podobnego do querySelectorAll().

Ta funkcja akceptuje selektor CSS jako parametr, a nie dowolny kod HTML, taki jak jQuery: $().

Od docs:

SYNTAX_ERR code 12 In invalid or illegal string has been specified; for example setting the selectorText property of a CSSStyleRule with an invalid CSS value.

Funkcja spodziewa selektora CSS i HTML dałeś go tak dała błąd składni.

Zobacz ten skrzypce, to działa dobrze:

http://jsfiddle.net/S6d6w/

Powiązane problemy