如何防止在内部点击事件中切换?

时间:2012-10-21 08:13:58

标签: jquery

嘿所以我有这个代码:

$('#album_cell' + currentCell).toggle(
    function() {
        $('#album_cell'+currentCell).flip({
            direction:  'lr',
            color:      "#FFF",
            content:    '<?php echo form_open('subjects/insert_caption');?>'
                      + '<textarea id="caption_input' + currentCell + '">'
                      + '   <?php echo $this->lang->line('insert_catpion_text'); ?>'
                      + '</textarea>'
                      + '<input type="submit" id="submit_caption' + currentCell + '" value="<?php echo $this->lang->line('save'); ?>" /> '
                      + '<?php echo form_close(); ?>'
                      + ''
        });
    },
    function() {
        $('#album_cell'+currentCell).revertFlip();
    }
);

我正在使用CodeIgniter&amp; jQuery Flip plugin,这是不相关的,但解释了一些人的未知代码。

现在所有数据都是正确的,插件会在第一次点击后创建一些内容,并按照预期尊重原始内容。

现在我的问题是如何在创建的内容上绑定一个事件,这样点击内部textarea /按钮就不会触发toggle方法?

修改

根据要求,这是输出的HTML:

<form action="http://localhost/ci/index.php/subjects/insert_caption" method="post" accept-charset="utf-8">
    <textarea id="caption_input1">add</textarea>
    <input type="submit" id="submit_caption1" value="save">
</form>

我试过了:

                    $('#album_cell'+currentCell).on(
'click','#caption_input'+currentCell,function() {
                     alert();
                     e.stopPropagation();
                    });

但这不起作用,它确实会触发事件,但仍会切换。

1 个答案:

答案 0 :(得分:3)

您必须向.on()函数添加一个选择器,以将事件绑定到动态创建的元素。

尝试类似的事情(body过于谨慎,使用您加载数据的容器):

$('body').on('click','#caption_input'+currentCell,function(e) {
    e.stopPropagation();
});