使用live()函数进行jQuery编辑的问题..需要一个忍者
这可能是一个简单的解决方法,但我在绕着它缠绕我的大脑时遇到了麻烦……
我正在为一些即时生成的div使用jQuery edit-in-place插件。 它应该很简单:单击新创建的div,并能够编辑内容。 我遇到了live()的问题。
不使用live(),它显然适用于静态div。 单击一次,获取可编辑的内容。
但是,在使用live()时,我需要双击才能编辑内容。 然后,任何随后被点击的时间,只需要一次。 这有点像焦点问题。 也许修改插件本身会有帮助吗?
这正是我所说的…… http://jsfiddle.net/efflux/62CzU/
它与我使用live调用editinplace()函数的方式有关:
$('.editable').live('click',function() { //event.preventDefault(); $('.editable').editInPlace({ callback: function(unused, enteredText) { return enteredText; }, bg_over: "#cff", field_type: "textarea", textarea_rows: "5", textarea_cols: "3", saving_image: "./images/ajax-loader.gif" }); });
如何才能使编辑就地插件在我通过js创建的div上正常运行?
任何帮助,将不胜感激!!
快速而肮脏的修复: http : //jsfiddle.net/62CzU/5/
var $this = $(this), isInit = $this.data('edit-in-place'); if(!isInit){ $('.editable').editInPlace({ callback: function(unused, enteredText) { return enteredText; }, bg_over: "#cff", field_type: "textarea", textarea_rows: "5", textarea_cols: "3", saving_image: "./images/ajax-loader.gif" }); $this.click(); }
它不起作用,因为直到你点击它才设置它。 单击它后,您需要设置EditInPlace,这需要它自己单击。 设置完成后,只需触发另一次点击: http : //jsfiddle.net/62CzU/6/
现场演示
只需更改按钮即可点击此按钮。
$("button.btn").click(function() { $(".mydiv").prepend('it take 2 clicks to edit me, unless I have already been edited'); $('.editable').editInPlace({ callback: function(unused, enteredText) { return enteredText; }, bg_over: "#cff", field_type: "textarea", textarea_rows: "5", textarea_cols: "3", saving_image: "./images/ajax-loader.gif" }); }); }
基本上你只是在每次创建它时重新绑定它。 你遇到live
问题的原因是因为在第一次点击它绑定它,所以然后在第二次点击它已经绑定并将工作。