在Jeditable中使用onreset时无法引用“this”

时间:2011-08-06 14:39:31

标签: javascript jquery jeditable

出于某种原因,当我使用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')});
                }

});

2 个答案:

答案 0 :(得分:2)

this comment似乎解释了它:

  

似乎在onresetonsubmit内,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);