我有可由AJAX更新的可编辑字段,因此我将 .live ()与Jeditable一起使用,以便能够在AJAX更新后持久绑定可编辑字段。但是,通过使用live(),它会抑制第一次“点击”,这是使该字段可编辑的第二次点击。
有趣的是(也许是解决方案的关键)是如果我使用'this'作为参考,对每个单独的jedtxt类字段抑制第一次点击(即需要点击两次才能输入字段一个jedtxt,然后两次再次进入字段B jedtxt的编辑),但是如果我使用类名'。jedtxt',则第一次点击仅被抑制一次(需要2次点击才能输入字段A,但是之后,只需点击一下即可输入字段B - 似乎“记住”整个班级的第一次点击。
使用$(this)禁止首次点击每次点击jedtxt类元素:
$('.jedtxt').live('click', function() {
$(this).editable('/post/somewhere',{ // note use of $(this)
'submit': 'OK',});});
使用$('。jedtxt')禁止首次点击仅限第一次点击jedtxt类:
$('.jedtxt').live('click', function() {
$('.jedtxt').editable('/post/somewhere',{ // note use of $('.jedtxt')
'submit': 'OK',});});
jedtxt元素如下:
<div id="ni-50" name="ni-50" class="jedtxt">somevalue to edit</div>
虽然第二种情况略好一些,但我仍然希望点击编辑直接在第一次点击时工作。注意我尝试双击或其他事件触发器,问题是相同的。这是一个vanilla测试页面,没有其他事件链接到div元素。
提前感谢您提供任何帮助。
答案 0 :(得分:0)
我建议你阅读这个主题:
Problem with jQuery edit-in-place with live() function.. need a ninja
第二个解决方案的人用
解决了这个问题$(this).trigger('click');
$('.editable').live('click',function() {
$('.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).trigger('click');
});