在我的应用程序中,我希望在用户单击面板标题时调整窗口大小,但该标题包含一个子元素按钮,该按钮具有另一个绑定的事件处理程序。我需要做的是,当用户点击该按钮时,不会调用调整大小功能。我尝试了很多变化,但没有一个变化。
HTML:
<div class="panel-heading" style="cursor:pointer">
<div class="pull-right">
<button type="button" class="btn btn-danger btn-xs" id="btn-subject-remove"><span class="glyphicon glyphicon-remove"></span> Remove</button>
</div>
</div>
我的jq是:
$('#btn-subject-remove').on('click',btnRemoveSubjectsClick);
$('#subscribers-row .panel-heading').on('click',btnResizeClick);
我尝试了什么,但没有一个有效:
$('#subscribers-row .panel-heading').off('click','#btn-subject-remove',btnResizeClick);
$('#btn-subject-remove').off('click',btnResizeClick);
$('#subscribers-row .panel-heading').on('click',btnResizeClick).children().click(function(e){return false});
我还尝试在 btnResizeClick 函数中检查点击了哪个元素,如果是删除按钮则返回false,但点击的元素仍然是 panel-heading
有什么建议吗?
答案 0 :(得分:1)
在子项上绑定点击事件,并使用e.stopPropagation()
来阻止父点击事件。
在一个简单的例子中:
$(function() {
$('div').on('click', function() {
$(this).toggleClass('redBg');
});
$('div>*').on('click', function(e) {
e.stopPropagation();
});
});
&#13;
div {
background: green;
width: 200px;
height: 200px;
}
span {
display: block;
height: 50px;
background: yellow;
}
.redBg {
background: red;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
With some text
<span> in a span </span>
</div>
&#13;