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
});