Имам функция jQuery, която ще замени всяка хипервръзка с jPlayer, използвайки тази хипервръзка като източник. Хипервръзката изглежда така в HTML:
<div>
<a href="demos/myfile.mp3" rel = "jPlayer">myfile</a>
</div>
Така че това, което имам досега в моя Javascript е следното:
$(document).ready(function() {
$("a[rel="jPlayer"]").jPlayer("setMedia", { mp3: $(this).attr("href") });
});
Проблемът е, че не мога да разбера правотоселектор, за да вземе стойността на съществуващата хипервръзка и да я използва за mp3: източник в кода. Може би дори не използвам това право или може би е нещо съвсем друго, което ми липсва.
Когато изпълнявам кода, както е, получавам "a.attributes is null" в Firebug. Може ли някой да помогне да разреши това?
Отговори:
2 за отговор № 1Това е с твоята сценария:
$("a[rel="jPlayer"]").jPlayer("setMedia", { mp3: $(this).attr("href") });
Препращате към jPlayer, а не към избраната стойност. Трябва да го използвате по друг начин, опитайте това:
$("a[rel="jPlayer"]").jPlayer("setMedia", { mp3: $("a[rel="jPlayer"]").attr("href") });
или
var anchor = $("a[rel="jPlayer"]");
anchor.jPlayer("setMedia", { mp3: anchor.attr("href") });
1 за отговор № 2
На страницата може да има повече от една връзка. За да инициализирате правилно всеки потребителски интерфейс на jPlayer, можете да итерите над всички връзки и да инициализирате jPlayer за всеки съвпадащ елемент.
$(document).ready(function() {
$("a[rel="jPlayer"]").each(function(index){
var link = $(this);
link.jPlayer("setMedia", { mp3: link.attr("href") });
});
});
0 за отговор № 3
ако this
не работи по очевиден начин, извадих селектора и го използвах отново.
$(document).ready(function() {
var media_link = $("a[rel=jPlayer]");
media_link.jPlayer("setMedia", { mp3: media_link.attr("href") });
});
Това има двойния ефект само на повикване extend
върху котления елемент веднъж, а не два пъти. Промених леко селектора, като премахна котировките.