出于某种原因,当我使用onreset处理程序时,我无法将我正在编辑的元素称为$(this)
。
但是,我可以在回调中使用$(this)
。我确定onreset有效,因为我已经做了警报。此外,当我在$(this).attr('id')
发出警报时,我得到“未定义”。
发生了什么事?
CODE
$('.edit').editable('ajax/save.php?editnotetext', {
type : 'mce',
submit : '<button class="save_button">Save</button>',
cancel : '<button class="cancel_button">Cancel</button>',
event: 'dblclick',
placeholder : 'Doubleclick to edit...',
indicator : 'Saving...',
tooltip : 'Doubleclick to edit...',
onblur: 'custom',
callback : function(){
console.log('unlocked');
$.post('ajax/save.php?unlocknotetext', {"id" : $(this).attr('id')});
},
onreset : function(){
console.log('unlocked');
//myId = $(this).attr('id');
//alert(myId); this shows up as undefined!
//alert("onreset works!");
$.post('ajax/save.php?unlocknotetext', {"id" : $(this).attr('id')});
}
});
答案 0 :(得分:2)
this comment似乎解释了它:
似乎在
onreset
和onsubmit
内,this
指向表单,而不是其容器,因此您必须使用$(this).parent()
。
一个简单的解决方法就是:
$('.edit').each(function() {
var $this = $(this);
$this.editable(... /* use $this instead of $(this) here*/)
});
答案 1 :(得分:0)
这在onReset部分对我有用:
curr_form = this[0]; //form object
par = curr_form.parentNode; //parent,container object
alert(par.id);