Как использовать jQuery для использования текста гиперссылки в качестве переменной? - PullRequest
2 голосов
/ 31 марта 2011

У меня есть функция 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.Кто-нибудь может помочь исправить это?

Ответы [ 3 ]

2 голосов
/ 31 марта 2011

Дело в твоем сценарии:

$('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 голос
/ 31 марта 2011

На странице может быть несколько ссылок. Чтобы правильно инициализировать каждый экземпляр jPlayer, вы можете перебрать все ссылки и инициализировать jPlayer для каждого соответствующего элемента.

$(document).ready(function() {   
    $('a[rel="jPlayer"]').each(function(index){
        var link = $(this);
        link.jPlayer("setMedia", { mp3: link.attr("href") });
    }); 
});
0 голосов
/ 31 марта 2011

Если this не работает очевидным образом, я бы вытащил селектор и использовал его снова.

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

Это имеет двойной эффект: вызывать extend только один раз, а не дважды. Я немного изменил селектор, удалив кавычки.

...