Я использую классифицированные ссылки для изменения содержимого FlowPlayer. Вот рабочая версия: http://jsfiddle.net/r9fAj/
На моей фактической странице, используя тот же код, первая нажатая ссылка работает нормально. Вторая функция не запускает функцию щелчка. Даже если я прокомментирую все, кроме console.log()...
$('.playerLink').click( function() {
audioPlayer.unload();
initAudioPlayer();
$('#player').css('display', 'block');
$('#player').animate({"height":"50px"}, 1000);
var newClip = {'url':$(this).attr('ajax-data'),'autoplay':true};
audioPlayer.play(newClip);
console.log('playing ' + $(this).attr('ajax-data'));
});
HTML-код
<a href="#" ajax-data="/audio/episodes/09_27_2013_Happy_Hour_88509726.mp3" class="playerLink">Listen</a>
<a href="#" ajax-data="/audio/episodes/10_04_2013_Happy_Hour_3478965.mp3" class="playerLink">Listen</a>
<a id="flowplayer" href="/audio/episodes/09_27_2013_Happy_Hour_88509726.mp3"></a>
И игрок инициализировался так:
var audioPlayer;
var initAudioPlayer = function () {
$f("flowplayer", "/player/flowplayer-3.2.16.swf", {
plugins: {
controls: {
fullscreen: false,
autoHide: false,
}
},
clip: {
autoPlay: false,
url: "",
}
});
audioPlayer = $f();
};
initAudioPlayer();
Поскольку jsFiddle работает много раз, я предполагаю, что что-то еще на моей странице не позволяет работать с вторым кликом(), но у консоли нет ошибок для меня.
Поэтому мой вопрос заключается в том, чтобы не опубликовать весь код сайта, как я могу отлаживать это?
Итак, это первый сайт, который я сделал, когда контент доставляется через AJAX, а внутренние ссылки пойманы
$("a:not([href^='http://'])").click( function(e) {
var url = $(this).attr("href");
var title = ($(this).attr("title")) ? ': ' + $(this).attr("title") : '';
e.preventDefault();
if(url!=window.location){
window.history.pushState({path:url},title,url);
$('#contentMain').load(url);
document.title = "It New Orleans" + title;
}
});
По какой-то причине он работает один раз, чтобы щелкнуть ссылку с классом, но второй раз получает предупреждениеDefault() ed.
<a href="#" ajax-data="/audio/foo.mp3" class="playerLink">Listen</a>
Исправление добавило [href^='#']
к not(), например
$("a:not([href^='http://'],[href^='#'])").click( function(e) {
Похоже, ваш обработчик события .click()
только для первой ссылки, которую вы нажимаете, а не для дополнительных кликов. Для общей отладки вы можете взять свою страницу, которая не работает, и постепенно комментировать/удалять другую часть JS и HTML, пока вы не сможете заставить ее работать правильно. Или начните с минимальной суммы, которая работает (скрипка), и постепенно добавьте в остальное, чтобы увидеть, когда она перестанет работать.