2011-10-18 66 views
0
$(function() { 
    var jw; 
    jw = Player; 
    return $('.btn-control:not(.add-btn)').toggle(function() { 
    var mnetInfo; 
    mnetInfo = { 
     albumId: $(this).data('album-id'), 
     trackId: $(this).data('song-id') 
    }; 
    if (jwplayer() !== void 0 && $(this).hasClass('current')) { 
     jw.play(); 
    } else { 
     jw.get(mnetInfo); 
     $(document.body).find('a[class*="pause"]').removeClass('pause').addClass('play'); 
     $(document.body).find('td.bold').removeClass('bold'); 
     $(document.body).find('.current').removeClass('current'); 
     if ($(document.body).find($(this)).parentsUntil('table').length > 0) { 
     $(document.body).find('tr#' + mnetInfo.trackId + ' td.song_info').addClass('bold'); 
     } 
    } 
    $(this).removeClass('play').addClass('pause current'); 
    console.log("FIRST"); 
    return false; 
    }, function() { 
    jw.pause(); 
    $(this).removeClass('pause').addClass('play'); 
    console.log("SECOND"); 
    return false; 
    }); 
}); 

上面的代碼工作與我的執行jwPlayer()的交互和前兩個點擊工作正常(點擊它開始播放的第一張專輯播放,點擊播放在第二張專輯的第二張專輯開始播放,但如果你點擊另一個相冊功能的發揮觸發的,而不是射擊播放切換)暫停切換......希望是有道理的jQuery的.toggle()事件火熄滅

工作代碼:

$(function() { 
    var jw; 
    jw = Player; 
    $('.play').live("click", function() { 
    var mnetInfo; 
    mnetInfo = { 
     albumId: $(this).data('album-id'), 
     trackId: $(this).data('song-id') 
    }; 
    if (jwplayer() !== void 0 && $(this).hasClass('current')) { 
     jw.play(); 
    } else { 
     jw.get(mnetInfo); 
     $('a[class*="pause"]').removeClass('pause').addClass('play'); 
     $('td.bold').removeClass('bold'); 
     $('.current').removeClass('current'); 
     if ($(this).parentsUntil('table').length > 0) { 
     $('tr#' + mnetInfo.trackId + ' td.song_info').addClass('bold'); 
     } 
    } 
    $(this).removeClass('play').addClass('pause current'); 
    return false; 
    }); 
    return $('.pause').live("click", function() { 
    jw.pause(); 
    $(this).removeClass('pause').addClass('play'); 
    return false; 
    }); 
}); 
+0

感謝提示! – dennismonsewicz

回答

1

切換保持它的狀態到一個特定的元素。所以,它只會在連續調用中的相同元素上調用時在兩個回調之間交替。如果你想在連續的功能之間切換,不管哪個元素被點擊,你將不得不保持自己的狀態,並在自己的暫停/播放或總是在同一元素上調用切換(fn1,fn2)。


你也應該學會如何簡化你對jQuery的使用。例如,下面的代碼:

$(document.body).find('a[class*="pause"]').removeClass('pause').addClass('play'); 
    $(document.body).find('td.bold').removeClass('bold'); 
    $(document.body).find('.current').removeClass('current'); 
    if ($(document.body).find($(this)).parentsUntil('table').length > 0) { 
    $(document.body).find('tr#' + mnetInfo.trackId + ' td.song_info').addClass('bold'); 
    } 

應該是:

$('a[class*="pause"]').removeClass('pause').addClass('play'); 
    $('td.bold').removeClass('bold'); 
    $('.current').removeClass('current'); 
    if ($(this).parentsUntil('table').length > 0) { 
    $('tr#' + mnetInfo.trackId + ' td.song_info').addClass('bold'); 
    } 

你不$(document.body).find()開始每選擇。

+0

是的,我走了那條路......我只是想不必分開按鈕的狀態......我想我可以將它分成$('。play'),click和a '$('。pause')。click''功能 – dennismonsewicz

+0

感謝您對簡化的建議......我從對象模式中選擇了該習慣我正在寫這些內容,您必須確定內容是在模式中還是在模態。感謝您指出了這一點!有時候我會忘記我正在做這件事 – dennismonsewicz