/ / Как да използвам jQuery, за да използвам текста на хипервръзката като променлива? - jquery, променливи, атрибути, селектор, href

Как да използвам jQuery, за да използвам текста на хипервръзката като променлива? - jquery, променливи, атрибути, селектор, href

Имам функция 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 върху котления елемент веднъж, а не два пъти. Промених леко селектора, като премахна котировките.