我有两个ID one
和two
的分部,作为分区two
内的分部one
。现在,如果我在one
内部two
但在two
之外点击,则要提醒我,如果我在<div id="one">
ONE ONE<br>ONE ONE<br>
<div id="two">
TWO TWO<br>TWO TWO<br>
</div>
ONE ONE<br>ONE ONE<br>
</div>
内点击,则提醒TWO。
这是我尝试过的。
HTML:
$("div").click(function(event){
var target = $(event.target);
if(target.is("two")){
alert("two");
}else{
alert("one");
}
});
JS:
var data1 = {};
data1.code = $("#ddlList option:selected").text(); //Taking dropdown list value
$.ajax({
type: "POST",
url: "Default.aspx/GetData",
data: JSON.stringify(data1),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
var data = JSON.stringify(data);
var data = $.parseJSON(data);
$.each(data, function (i) {
$("#Table").append("<tr><td>" "</td></tr>");
});
提前感谢您的帮助。
答案 0 :(得分:2)
如果你有嵌套的div,都有事件处理程序,但只想要一个事件,你需要使用
event.stopPropagation();
首先想到的是使用event.preventDefault()
,但是:
preventDefault()方法不会阻止事件通过DOM进一步传播。使用stopPropagation()方法来处理这个问题。
另外,.is
函数将选择器作为参数,因此将是类选择器(.class
)或id(#id
)。
提供更新的代码:
$("div").click(function(event){
var target = $(event.target);
if(target.is("#two")){
// don't bubble up to get two events
event.stopPropagation();
alert("two");
}else{
alert("one");
}
});
答案 1 :(得分:1)
$("#one").click(function(event) {
alert("one");
});
$("#two").click(function(event) {
event.stopPropagation();
alert("two");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="one">
ONE ONE
<br>ONE ONE
<br>
<div id="two">
TWO TWO
<br>TWO TWO
<br>
</div>
ONE ONE
<br>ONE ONE
<br>
</div>
event.StopPropagation()
以避免冒泡答案 2 :(得分:0)
$(document).ready(function(){
$("div").click(function(){
var id = $(this).attr('id');
switch (id) {
case 'one':
alert('one');
break;
case 'two':
alert('two');
break;
});
});
注意:未经测试