如何利用JQuery的“.on()”方法来处理非本机jquery元素?

时间:2015-12-31 20:04:42

标签: javascript jquery jquery-easyui

我最近发布了一个问题here,告诉我使用.on()将元素附加到动态创建的对象上。我只是在我的脚本中实现这个问题,因为我使用的是来自EasyUI的元素:

$(".item").draggable({ ... });
而且我不太确定如何修改它以使用.on()。 我尝试过以下方法: $('body').on('draggable', '.item', function() { ... });(给我一个错误,:是一个意外的令牌(代码行是revert:true,))。

和:
$('body').on('draggable', '.item', draggable({ ... }));但是没有定义draggable

对不起,如果这真的很容易,那只是我的头脑:P

感谢您的帮助

3 个答案:

答案 0 :(得分:2)

draggable不是一个事件,因此您无法为其附加事件处理程序。它是一个jQuery插件方法,你不能在元素上调用它,直到元素存在。

如果您要动态创建元素,则需要将初始化插件的代码放入创建元素的代码中。所以它看起来像:

newElement = $("<div>", { "class": "item" }).draggable({...}).appendTo(something);

使用.load时,您可以在回调函数中附加小部件。

$("#shop").load("showcontent/cat1.html", function() {
    $(this).find(".item").draggable({ ... });
});

答案 1 :(得分:0)

对于第一个问题,它看起来像revert:true需要是一个对象SELECT `A`.*, max(B.timestamp) as timestamp2 FROM (`A`) JOIN `B` ON `A`.`column1` = `B`.`column1` WHERE `column2` = 'Player' GROUP BY `column1` ORDER BY `timestamp2` desc

对于第二个问题,您需要将回调函数传递给事件侦听器,您可以使用函数关键字声明一个内联,例如。

{revert:true}

或者您可以传递匿名函数

$('body').on('draggable', '.item', function draggable({ ... }));

或在其他地方声明该函数,并通过引用将其传递给事件监听器,例如。

$('body').on('draggable', '.item', function({ ... }));

答案 2 :(得分:0)

看起来您将元素的名称与事件的名称混淆。您可以调用 { "xyz": { "mappings": { "abc": { "properties": { "lastModifiedBy": { "type": "string" }, "lastModifiedDate": { "type": "date", "format": "dateOptionalTime" }, "name": { "type": "string" }, "profile": { "properties": { "lastModifiedBy": { "type": "string" }, "lastModifiedDate": { "type": "date", "format": "dateOptionalTime" }, "type": { "type": "string" }, "views": { "properties": { "id": { "type": "string" }, "isDefault": { "type": "boolean" }, "name": { "type": "string" }, "properties": { "properties": { "name": { "type": "string" }, "type": { "type": "string" }, "value": { "type": "string" } } }, "type": { "type": "string" }, "viewId": { "type": "string" }, "widgets": { "properties": { "elementId": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "properties": { "properties": { "name": { "type": "string" }, "type": { "type": "string" }, "value": { "type": "string" } } }, "type": { "type": "string" } } } } } } } } } } 来生成可以拖动的新元素。

要收听元素被拖动的事件,您希望列出$(".item").draggable({...})onStartDragonDrag。像这样onStopDrag

请参阅此处的完整文档:http://www.jeasyui.com/documentation/index.php