Javascript $(“class”)。在(';单击';,函数(),但如果它有$(';class2';)(子类)则不能
我正在做一个项目,我需要为Javascript $(“class”)。在(';单击';,函数(),但如果它有$(';class2';)(子类)则不能,javascript,jquery,Javascript,Jquery,我正在做一个项目,我需要为$(.playbox')设置一个onclick函数,但如果按下$('mp3buy'),$(.mp3buy')是$('playbox')的子项,那么如果我点击$('mp3buy')就好像我点击了$(.playbox') 我试过: $(".playbox").not('mp3buy').on('click', function () 我还尝试将以下if语句放入函数中,但函数无法执行: $(".playbox").on('click', function () {
$(.playbox')
设置一个onclick函数,但如果按下$('mp3buy')
,$(.mp3buy')
是$('playbox')
的子项,那么如果我点击$('mp3buy')
就好像我点击了$(.playbox')
我试过:
$(".playbox").not('mp3buy').on('click', function ()
我还尝试将以下if语句放入函数中,但函数无法执行:
$(".playbox").on('click', function () {
if (this.hasClass('mp3buy')){
//do nothing
} else {
$(".playerbottom").removeClass("noclick");
$(".inlinethinger").removeClass("noclick");
var key = $(this).find(".play").attr('key');
var name = $(this).find(".play").attr('name');
window.nowplay = $(this).find(".play");// variable for now playing class .play
window.nowplay2 = $(this);
EvalSound(this, key);
$(".play").not(this).removeClass("pause");
$(".play").not(this).parent().parent().removeClass('playboxplaylight');
$(".play").not(this).parent().removeClass("greenback");
$(this).find(".play").toggleClass("pause");
$(this).find(".play").parent().parent().toggleClass('playboxplaylight');
$(this).find(".play").parent().toggleClass("greenback");
$(this).find(".play").hasClass("pause") ? $(".playerbottom").addClass("pausebottom") : $(".playerbottom").removeClass("pausebottom");
$(".nowplayingname").text(name);
$(".playerbottom").on('click', function () {
$(this).find(".play").hasClass("pausebottom") ? nowplay.addClass("pause") : nowplay.removeClass("pause");
});
}
});
我想知道是否有一种简单的方法可以排除onclick函数中的子类?如果我没有读错,您可以使用以下HTML结构:
<div class="playbox">
<div class="mp3buy">
... content ...
</div>
</div>
$(“.mp3buy”)。在(“单击”,功能(ev){
ev.stopPropagation();
警报(“mp3buy点击处理程序已调用”);
});
$(“.playbox”)。在(“单击”,函数(){
警报(“调用playbox点击处理程序”);
});
.播放框内容
.mp3buy内容
我的建议是针对您的类测试事件目标元素:
$(函数(){
$(“.playbox”)。在('click',函数(e){
如果($(e.target).is('.mp3buy')){
//无所事事
返回;
}
//做你的事
警报(“正常”);
});
});
点击我
您的css选择器中缺少了点:$(“.playbox”)。而不是('.mp3buy')。在('click',function(){..
上,感谢艺术!我从来不知道event.stopPropagation()(防止事件在DOM树中冒泡),这正是我所需要的。
$(".mp3buy").on("click", function(ev) {
ev.stopPropagation();
// Any clicks on .mp3buy will not be passed to .playbox's click handler.
});
$(".playbox").on("click", function() {
// Normal functionality here
});