2012-06-19 94 views
2

我使用Jeditable jQuery插件,使到位变为列表编辑。这适用于页面上现有的列表项。jeditable动态元素

$('.edit').editable('http://localhost:8080/EditInPlace/Editable', { 
    event  : "dblclick", 
    callback : function(value, settings) { 
     $(".dropdown dt a span").html(value); 
     $("#result").html("Selected value is: " + getSelectedValue()); 
    } 
}); 

但是,我在页面上动态添加列表项,并且这些不响应事件处理程序。我假设我需要使用委托事件,就像我用于点击事件一样。

$(document).on("click",".edit",function(e){ 
    alert("click!"); 
}); 

我无法弄清楚如何将Jeditable处理程序添加到委派事件。有什么建议么?

回答

3

代表团方法适用于事件。您可以创建一个自定义事件,但为了保持简单,现在只需在每次添加需要它的新元素时调用您的插件即可。

这可以在ajax成功回调中,或者在代码中调用任何插入方法(如append()html())之后。

几件事情可以做,以保持代码的精简是存储插件的选项对象中的变量,所以你不必创建它们每一次,或者创建一个包含许多插件调用功能。

例子:

var edit={ 
     url: 'http://localhost:8080/EditInPlace/Editable', 
     opts:{ 
      event  : "dblclick", 
      callback : function(value, settings) { 
       $(".dropdown dt a span").html(value); 
       $("#result").html("Selected value is: " + getSelectedValue()); 
     } 
    } 
}; 

$(selector).append(newContentString).find('.editClass').pluginName(edit.url, edit.opts) 
+0

它完美。谢谢!无法获得存储在变量中的选项,但我会解决这个问题。 – user1236595