我在jQuery中有一个切换面板脚本,当我单击h2元素时,我的内容会扩展和折叠。
问题是我在那个h2元素中有输入字段,当我尝试使用jEditable编辑某些内容时会出现这些字段。我想找到一种方法,以便当我点击该输入字段时,我没有得到点击事件。
我的猜测是以某种方式使用:not
选择器方法,但我尝试了一堆迭代无济于事。
CODE
//toggle panel content
$(".panelcollapsed h2").click(function(){
$(this).siblings(".panelcontent").slideToggle(100, 'easeInQuad');
});
答案 0 :(得分:1)
您可以测试该事件是否来自input
元素,如果有,则忽略它:
$(".panelcollapsed h2").click(function(e){
if (e.target.tagName.toLowerCase() === 'input') {
return;
}
$(this).siblings(".panelcontent").slideToggle(100, 'easeInQuad');
});
这会检查e.target
的tagName
,即发生事件的元素,以查看它是否与input
相同。如果是,return
将退出事件处理程序。
答案 1 :(得分:1)
您需要检查event.target
:
//toggle panel content
$(".panelcollapsed h2").click(function(e){
if ($(e.target).is('h2'))
$(this).siblings(".panelcontent").slideToggle(100, 'easeInQuad');
});
答案 2 :(得分:1)
不确定你的DOM是什么样的,所以只是在黑暗中拍摄。也许,在输入的点击功能中使用e.stopPropagation()
可以解决问题吗?
答案 3 :(得分:0)
,你可以在他的onclick上添加一个event.stopPropagation()。
$('#inputInsideH2').click(function(event){
event.stopPropagation();
$(this).focus();
};
event.stopPropagation()将停止点击事件的传播。