Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 将事件处理程序附加到动态元素_Jquery_Event Handling - Fatal编程技术网

Jquery 将事件处理程序附加到动态元素

Jquery 将事件处理程序附加到动态元素,jquery,event-handling,Jquery,Event Handling,首先,我有一些我可以拖放的小部件,它们也是可排序的。每个小部件都有一个删除按钮。我想实现的是,其中一个小部件有一个add按钮。每当我点击addnewwidget按钮时,我都想克隆第一个widget,并将其添加到列表的底部。到目前为止,它是有效的。我可以克隆小部件,但我使用clone(true),它允许close按钮完美地用于克隆close按钮。问题是我不能拖放克隆的项目。我错过了什么 先谢谢你 谢谢你的回复。但这对我不起作用 这是代码的一部分 makeSortable : function (

首先,我有一些我可以拖放的小部件,它们也是可排序的。每个小部件都有一个删除按钮。我想实现的是,其中一个小部件有一个add按钮。每当我点击addnewwidget按钮时,我都想克隆第一个widget,并将其添加到列表的底部。到目前为止,它是有效的。我可以克隆小部件,但我使用clone(true),它允许close按钮完美地用于克隆close按钮。问题是我不能拖放克隆的项目。我错过了什么

先谢谢你

谢谢你的回复。但这对我不起作用

这是代码的一部分

 makeSortable : function () {
    var iNettuts = this,
        $ = this.jQuery,
        settings = this.settings,

        $sortableItems = (function () {
            var notSortable = '';
            $(settings.widgetSelector,$(settings.columns)).each(function (i) {
                if (!iNettuts.getWidgetSettings(this.id).movable) {
                    if(!this.id) {
                        this.id = 'widget-no-id-' + i;  
                    }
                    notSortable += '#' + this.id + ',';

                }



            });

            var result = $('> li:not(' + notSortable + ')', settings.columns);


            return result;
        })();

    $sortableItems.find(settings.handleSelector).css({
        cursor: 'move'
    }).mousedown(function (e) {

        $sortableItems.css({width:''});
        $(this).parent().css({
            width: $(this).parent().width() + 'px'
        });

    }).mouseup(function () {
        if(!$(this).parent().hasClass('dragging')) {
            $(this).parent().css({width:''});



        } else {
            $(settings.columns).sortable('disable');
        }
    });

    $(settings.columns).sortable({
        items: $sortableItems,
        connectWith: $(settings.columns),
        handle: settings.handleSelector,
        placeholder: 'widget-placeholder',
        forcePlaceholderSize: true,
        revert: 300,
        delay: 100,
        opacity: 0.8,
        containment: 'document',
        start: function (e,ui) {
            $(ui.helper).addClass('dragging'); 



        },
        stop: function (e,ui) {
            $(ui.item).css({width:''}).removeClass('dragging');
           $(settings.columns).sortable('enable');
这是我在网上找到的现成代码之一

当我第一次在浏览器上查看它时,我可以看到6个小部件。我想克隆其中任何一个并动态添加


谢谢

他们可能缺少正确的事件处理程序。当您最初为小部件绑定事件处理程序时,您可能在小部件的选择上使用了
mousedown()
,等等。但是,这将只绑定jQuery在执行语句时找到的小部件

如果还希望绑定动态创建的对象,则需要使用
live()
绑定事件

所以不是

$('.widget').mousedown(function(){...});`


谢谢你的回复。但它不起作用。我意识到,当我更改jquery的版本时,它可以工作,但当我删除该小部件时,可拖动小部件的行为异常。它的宽度和尺寸增加了一倍。然而,克隆人也可以拖放。原因可能是什么?Live是一种仅在较旧版本的jquery中使用的方法,较新版本不支持这种方法。尝试将live替换为“on”或“delegate”。
$('.widget').live("mousedown", function(){...});