jQuery单击或关闭

时间:2011-07-10 13:39:49

标签: jquery html click

  

可能重复:
  jQuery bind click ANYTHING but ELEMENT

我有这个HTML

<div id="outer">
  <input id="input1" type="text" value="button1"/>
  <input id="input2" type="text" value="button2"/>
</div>

我正在尝试使用此

var insideOuter = "";

jQuery('#outer').live('click', function (e) {
    if(insideOuter != "" && insideOuter != 'outer'){
        alert('Inside');
    }
    insideOuter = "outer";
    return false;
});

jQuery('body').live('click', function (e) {
    if(insideOuter != ""&& insideOuter != 'body'){
        alert('Outside');
    }
    insideOuter = "body";
    return false;
});

基本上,我正在尝试

  1. 如果用户点击内部 id="outer"然后不做任何其他事情
  2. 如果用户点击外面 id="outer"做点什么
  3. 有人可以推荐更好的东西吗?

3 个答案:

答案 0 :(得分:0)

如果您没有尝试将事件绑定到DOM中尚不存在的元素,我建议不要使用live()。请改用bind()click()

此外,请使用length属性:

,而不是检查非空字符串
if (insideOuter.length > 0 && ...

答案 1 :(得分:0)

$("body").live('click', function (e) {
    if ( $(e.srcElement).attr("id") !== 'outer' && $(e.srcElement).parents("#outer").length == 0)
        alert('foo');
});

答案 2 :(得分:-1)

这是最近一个问题的重复问题......我会找到答案并发布链接。

$(document).bind('click', function (e) {
 // Do whatever you want; #outer click event has been stopped
});

$('#outer').bind('click', function(e) {
    e.stopPropagation();
});

jQuery bind click *ANYTHING* but *ELEMENT*

How do I detect a click outside an element?