jQuery.toggle()事件火已关闭
上面的代码与我的jwPlayer()实现交互,在前两次单击时工作正常(在开始播放的第一张专辑上单击play,在第二张专辑上单击play,第二张专辑开始播放,但如果在另一张专辑上单击play,该函数将触发暂停切换,而不是触发播放切换)。。。希望这是有道理的 工作代码:jQuery.toggle()事件火已关闭,jquery,Jquery,上面的代码与我的jwPlayer()实现交互,在前两次单击时工作正常(在开始播放的第一张专辑上单击play,在第二张专辑上单击play,第二张专辑开始播放,但如果在另一张专辑上单击play,该函数将触发暂停切换,而不是触发播放切换)。。。希望这是有道理的 工作代码: $(function() { var jw; jw = Player; return $('.btn-control:not(.add-btn)').toggle(function() { var mnetInf
$(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;
});
});
切换将其状态保持为特定元素。因此,当在连续调用中对同一元素调用时,它将仅在两个回调之间交替。如果无论单击哪个元素,都希望在连续功能之间切换,则必须保持自己的状态,并在同一元素上的暂停/播放或始终调用切换(fn1、fn2)之间切换
您还应该学习如何简化jQuery的使用。例如,此代码:
$(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;
});
});
应该是:
$(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');
}
不是用
$(document.body)启动每个选择器。find()
是的,我已经走了这条路。。。我只是不想把按钮的状态分开。。。我想我可以把它分成一个$('.play')。单击和一个$('.pause')。单击功能感谢您提供关于简化的提示。。。我从我正在写的一个对象模态中养成了这个习惯,在那里你必须确定内容是在模态中还是在模态后面。谢谢你指出这一点!有时我忘了我在做这件事
$('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');
}