我正在使用分类链接来更改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一遍又一遍地工作,我假设我的页面中的其他内容阻止第二次click()工作,但控制台没有错误。
所以我的问题是,如果没有发布整个网站的代码,我该如何进行调试?
答案 0 :(得分:0)
因此,听起来您的.click()
事件处理程序仅针对您单击的第一个链接而不是针对其他点击触发。对于一般调试,您可以使您的页面无效,并逐步注释掉/删除JS和HTML的其他部分,直到您能够使其正常工作。或者从最小量工作(小提琴)开始,然后逐渐添加其余部分以查看它何时停止工作。
答案 1 :(得分:0)
所以这是我所做的第一个网站,其中内容通过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's New Orleans" + title;
}
});
出于某种原因,它可以一次点击与该类的链接,但第二次得到preventDefault()ed。
<a href="#" ajax-data="/audio/foo.mp3" class="playerLink">Listen</a>
修复是将[href^='#']
添加到not()例如
$("a:not([href^='http://'],[href^='#'])").click( function(e) {