0

我正在使用分类链接来更改 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() 工作,但控制台对我来说没有错误。

所以我的问题是,如果没有发布整个网站的代码,我该如何进行调试呢?

4

2 回答 2

0

因此,听起来您的.click()事件处理程序仅针对您单击的第一个链接而不是针对其他单击而触发。对于一般调试,您可以将不工作的页面逐步注释掉/删除 JS 和 HTML 的其他部分,直到您能够使其正常工作。或者从正在工作的最小数量(小提琴)开始,然后逐渐添加其余部分以查看它何时停止工作。

于 2013-10-25T04:09:50.210 回答
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) {

于 2013-10-25T15:02:51.403 回答