jQuery:在容器内部单击时调用一个动作,但是,如果我点击该容器内的一个组件,那么就不要调用该动作

时间:2011-04-28 03:19:56

标签: jquery

我拥有的是:无论我在div容器内点击哪里,我都会在该位置创建一个文本框。我所做的基本上是捕获div容器上的click事件。像这样的东西

修改

<div id="noteCol">
    <textarea class="textBox"/>
    ...
</div>

<script>
     jQuery(".textBox").click(function(e){
         e.preventDefault();
     });
     jQuery("#noteCol").click(function(e){
         ...
     });
</script>

我现在遇到的问题是,如果我想在我刚创建的文本框上书写,那么我就不能了。因为文本框是在div noteCol内创建的,所以当我尝试单击该文本框来编写内容时,jQuery会捕获click事件并在当前文本框的顶部创建一个文本框。我该如何解决这种情况? (对于所有文本框,可能会有相同的class="textbox",当我在noteCol内单击时,会以某种方式检测我是否点击.textbox)请帮助

2 个答案:

答案 0 :(得分:1)

点击文字框时使用event.preventDefault();。 像这样......

$('.textBox').click(function(e){
           e.preventDefault();
           //rest of your logic go here

});

参考...... preventDefault

已更新

我认为在您的情况下stopPropagation()会帮助您......

 $('.noteCol .textBox').click(function(e){
               e.stopPropagation();
               //rest of your logic will go here

    });

我认为您正在寻找上述选项。

我希望它可以帮助你

答案 1 :(得分:0)

这是我的问题的解决方案。由于我动态创建textarea,因此click事件不会绑定到新创建的textarea。我必须使用live。这是我的解决方案

jQuery (".textBox").live("click",function(e){
    e.stopPropagation();
});
jQuery("#noteCol").live("click", function(e){
    ...
});