问:
我有以下情况:
Div包含一个链接,我想只选择没有链接的div,我的意思是,当点击div我想要特定的动作不同于点击链接。通过一些JQuery。
我所处理的结构是:(通过萤火虫)
<div class ="rsAptContent">
sql
<a class = "rsAptDelete" href = "#" style ="visibility: hidden;">Delete</a>
</div>
JQuery代码:
<script type="text/javascript">
$(document).ready(function() {
$(".rsAptContent").click(function(e) {
ShowDialog(true);
e.preventDefault();
});
});
function ShowDialog(modal) {
$("#overlay").show();
$("#dialog").fadeIn(300);
if (modal) {
$("#overlay").unbind("click");
}
else {
$("#overlay").click(function(e) {
HideDialog();
});
}
}
function HideDialog() {
$("#overlay").hide();
$("#dialog").fadeOut(300);
}
</script>`
当我点击链接时,我不想执行Jquery代码,如何选择没有链接的div。
提前致谢
答案 0 :(得分:4)
您是否正在寻找类似stopPropagation()代码的内容?
$(".rsAptContent").click(function(e) {
e.stopPropagation();
ShowDialog(true);
return false;
});
});
这应该阻止链接执行。
http://api.jquery.com/event.stopPropagation/
编辑:区分点击链接并点击除链接
之外的内容的任何部分 $(".rsAptContent").click(function(e) {
var $target = $(e.target);
if($target.is(a){
// It's the link.
}else{
// else it's not
}
});
});
答案 1 :(得分:3)
检查点击的目标元素而不是执行操作
获取有关在脚本
下单击使用哪个元素的信息function whichElement(event){
var tname
tname=event.srcElement.tagName
alert("You clicked on a " + tname + " element.")
}
答案 2 :(得分:2)
试试这个:
$(".rsAptContent").click(function(e) {
if($(e.target).hasClass('rsAptDelete')) return false;
ShowDialog(true);
e.preventDefault();
});
});
如果目标是链接,则事件被取消;
答案 3 :(得分:1)
如果删除链接上已有点击处理程序,则只需使用stopPropagation()
停止事件传播。
$(".rsAptDelete").click(function(e) {
e.stopPropagation();
});