/ / Jak używać jQuery do używania tekstu hiperłącza jako zmiennej? - jquery, zmienne, atrybuty, selektor, href

Jak używać jQuery do używania tekstu hiperłącza jako zmiennej? - jquery, zmienne, atrybuty, selektor, href

Mam funkcję jQuery, która zastąpi każde hiperlink za pomocą jPlayera, używając tego hiperłącza jako źródła. Hiperlink wygląda tak w HTML:

<div>
<a href="demos/myfile.mp3" rel = "jPlayer">myfile</a>
</div>

Więc to, co mam do tej pory w moim Javascriptu to:

$(document).ready(function() {
$("a[rel="jPlayer"]").jPlayer("setMedia", { mp3: $(this).attr("href") });
});

Problem polega na tym, że nie mogę wymyślić prawicyselector, aby pobrać wartość istniejącego hiperłącza i użyć go dla źródła mp3: w kodzie. Może nawet nie używam tego prawa, a może to coś zupełnie innego, czego mi brakuje.

Kiedy uruchamiam kod w niezmienionej postaci, otrzymuję "a.attributes is null" w Firebug. Czy ktoś może pomóc rozwiązać ten problem?

Odpowiedzi:

2 dla odpowiedzi № 1

Chodzi o konstrukcję skryptu:

$("a[rel="jPlayer"]").jPlayer("setMedia", { mp3: $(this).attr("href") });

Odsyłasz to do jPlayera, a nie do wybranej wartości. Powinieneś używać go w inny sposób, spróbuj tego:

$("a[rel="jPlayer"]").jPlayer("setMedia", { mp3: $("a[rel="jPlayer"]").attr("href") });

lub eaven

var anchor = $("a[rel="jPlayer"]");
anchor.jPlayer("setMedia", { mp3: anchor.attr("href") });

1 dla odpowiedzi nr 2

Może istnieć więcej niż jeden link na stronie. Aby poprawnie zainicjować każdą instancję jPlayera, możesz iterować po wszystkich linkach i zainicjować jPlayer dla każdego dopasowanego elementu.

$(document).ready(function() {
$("a[rel="jPlayer"]").each(function(index){
var link = $(this);
link.jPlayer("setMedia", { mp3: link.attr("href") });
});
});

0 dla odpowiedzi № 3

Gdyby this nie działa w oczywisty sposób, wyciągnę selekcjonera i ponownie go użyję.

$(document).ready(function() {
var media_link = $("a[rel=jPlayer]");
media_link.jPlayer("setMedia", { mp3: media_link.attr("href") });
});

Ma to podwójny efekt tylko wzywania extend na element kotwiący raz, a nie dwa razy. Zmieniłem nieco selektor, usuwając cudzysłowy.