2013-05-07 10 views
52

to działa:Czy można ustawić wiele atrybutów danych za pomocą funkcji jQuery.attr()?

$(myObj).attr("data-test-1", num1); 
$(myObj).attr("data-test-2", num2); 

Ale tego nie robi:

$(myObj).attr({ 
    data-test-1: num1, 
    data-test-2: num2 
}); 

jestem brakuje czegoś naprawdę oczywiste tutaj?

+1

Twój drugi przykład powoduje błąd składni. – Matt

+5

Nie można używać kresek w kluczach obiektów, chyba że rozdzielimy je w postaci ciągu, np. '{" Data-test-1 ":" dane "}' – m90

Odpowiedz

98

Pewnie tak:

$(myObj).attr({"data-test-1": num1, "data-test-2": num2}); 

Jak stanu .attr() dokumentów:

ustawienie kilku atrybutów naraz

Aby zmienić atrybut alt i dodaj atrybut title w taki sam czas, przekazać oba zbiory nazw i wartości do metody jednocześnie za pomocą zwykłego obiektu JavaScript. Każda para klucz-wartość w obiekcie dodaje lub modyfikuje atrybut:

$('#greatphoto').attr({ 
    alt: 'Beijing Brush Seller', 
    title: 'photo by Kelly Clark' 
}); 

Ustawiając wiele atrybutów, cytaty wokół nazwy atrybutów są opcjonalne.

+7

"cudzysłowy wokół nazw atrybutów są opcjonalne" dotyczy tylko właściwości camelCased, PO chce aby używać myślników, cytowanie powinno być obowiązkowe w tym przypadku -> 'Nieoczekiwany token -' – m90

+0

@ m90 - To wzięte bezpośrednio z interfejsu API jQuery, to nie jest mój komentarz. – j08691

+4

Jestem tego świadomy, ale myślniki są przyczyną problemów OP, więc myślę, że należy to dodać. – m90

4

Tak, możliwe jest ustawienie wielu atrybutów, wystarczy użyć prostej składni literalnej Object. Przykład:

$('#my_image').attr({ 
    alt: 'Beijing Brush Seller', 
    title: 'photo by Kelly Clark' 
}); 

Więcej informacji na temat sposobu węźle można znaleźć here.

+2

[JSON to nie to samo, co składnia literalna obiektu] (http://stackoverflow.com/questions/2904131/what-is-the-difference-between-json-and-object-literal-notation). To, czego używasz, to drugie. – Matt

+0

Przykro mi, naprawiłem to :) – Goran

Powiązane problemy