无法获取克隆元素以保留原始事件

时间:2015-07-06 16:48:29

标签: javascript jquery html

我试图克隆传递给函数的元素以及与之关联的所有事件,因为在文档就绪中定义了$('.example').on('click', function(e) ... )}这样的事件。

所以我做了以下事情:

$('.example').on('click', function(e) {
        e.preventDefault();
        surpriseMe($(this));
});

我试着在这里将事件克隆到这个元素旁边(我需要抓取父元素,.html()只返回内部html,因此元素本身):

function surpriseMe(element) {

    var newElement = element.parent().clone(true,true).html();

    surprise.insertBefore(element.parent());

    if (numElements == 3) {
        newMonth = $('<li class="item-dragable-placeholder">'+ newElement +'</li>
    }  

}

我相信true, true内的.clone()应强制父母也抓住其子事件,但每当我点击新放置的元素时,都不会发生任何事情

2 个答案:

答案 0 :(得分:2)

使用事件委派...

变化:

$('.example').on('click', function(e) { ...

要:

$(document).on('click', '.example', function(e) { ...

注意:而不是使用document,找到页面加载时可用的最近的祖先元素(容器)并使用它。

答案 1 :(得分:0)

当你进行插入时,不要插入新元素,而是要求只插入html,删除html部分,它将为你提供元素及其功能。

 $(document).ready(function(){
    var numElements=0;

    function surpriseMe(element) {

       var newElement = element.parent().clone(true,true);
       newElement.insertBefore( ".inner" );
       numElements++;

       if (numElements == 3) {
         newMonth = $('li.item-dragable-placeholder').insert(newElement);
       }  

    }

    $('.example').on('click', function(e) {
      e.preventDefault();
      surpriseMe($(this));
    });
});

请参阅以下(示例)[http://jsfiddle.net/dshun/1j9khfnc/4/](please注释,因为给出的示例代码不完整。例如,未声明变量surprise,numElements。我在小提琴中做了一些假设)

import json


def func():

    lst = []
    lst.append('1')
    lst.append('2')

    print json.dumps(lst)  ## <-- `dumps` dumps to a string

if __name__ == '__main__':
    func()