2011-10-24 18 views
31

Mam następujący kod HTML:Aktualizacja wartości atrybutu danych przy użyciu jQuery

<a class="toggle" href="#toggle"> 
    <img src="app/css/images/tock.png" alt="No" data-id="4" data-block="1"> 
</a> 

Chcę zaktualizować wartość src i data-block atrybutów przy użyciu jQuery. Jak mam to zrobic?

Aktualizacja: Ponieważ mam wiele elementów graficznych, chcę zaktualizować wartość danego obrazu za pomocą data-id.

Odpowiedz

74
$('.toggle img').data('block', 'something'); 
$('.toggle img').attr('src', 'something.jpg'); 

Zastosowanie jQuery.data i jQuery.attr.

Pokazuję je osobno dla dobra zrozumienia.

+0

Przykro mi, zapomniałem wspomnieć, ale chcę, aby wybrać konkretną img z wykorzystaniem danych-id, selektor należy wybrać element obrazu przez ID danych, na przykład coś takiego jak '$ ('toggle img [data-id = 4]')' –

+3

Jesteś prawie na miejscu: '$ ('toggle img [data-id =" 4 "]')' –

+13

FWIW, stwierdzam, że w aby przesłonić atrybut danych, musisz użyć '.attr', a nie' .data'. Jest to mylące, ponieważ jQuery może dołączać dane do elementu, ale może nie być odzwierciedlone w domenie, jeśli atrybut data już istnieje. –

2
$('.toggle img').data('block', 'something').attr('src', 'something.jpg'); 
+0

to nie jest to, co chciałem, zaktualizowałem moje pytanie, proszę spojrzeć. –

7
$('.toggle img').each(function(index) { 
    if($(this).attr('data-id') == '4') 
    { 
     $(this).attr('data-block', 'something'); 
     $(this).attr('src', 'something.jpg'); 
    } 
}); 

lub

$('.toggle img[data-id="4"]').attr('data-block', 'something'); 
$('.toggle img[data-id="4"]').attr('src', 'something.jpg'); 
+0

używanie jQuery.attr, a nie jQuery.data, jak proponowano w tej odpowiedzi, powoduje błędy w niektórych przeglądarkach. Byłem tam. – TheBigDoubleA

+5

używanie danych jest rzeczywiście dobrą sugestią, ale należy pamiętać, że nie zmienia oryginalnego elementu dom, co może powodować problemy z innymi jquery, która zależy od zmiany domeny. http://www.peterbe.com/plog/data-and-attr-in-jquery –

Powiązane problemy