0
var func = function()
{
    $(this).hide();
    $parent = $(this).parent();
    $parent.removeClass('my_signature_mouseover');
    var text = $(this).val();
    var $span = $("#status span");
    $span.text(text);
    $span.show();
};
$("#status input").keyup(function (e) {
    var keyCode = e.keyCode || e.which;
    if (keyCode == 13) {
       func();
    }
}).blur(func);

如果模糊或按“Enter”,我想func运行。但是上面的代码只有在模糊时才有效,在按“Enter”的情况下,它会报告“Permission denied to access parentNode”。

虽然我知道它与this不同上下文中的关键字有关,但我不知道如何解决它。

4

2 回答 2

1

您正在func使用正常的函数调用来调用 ,这会导致内部functhis变量将引用全局对象(窗口)。

您必须使用 执行函数call,以保留上下文('this'值),即触发事件的元素:

$("#status input").keyup(function (e) {
    var keyCode = e.keyCode || e.which;
    if (keyCode == 13) {
       e.preventDefault(); // stop event propagation
       func.call(this);
    }
}).blur(func);
于 2009-09-06T06:19:10.273 回答
-1

试试这个:

var func = function(elem)
{
    elem.hide();
    var $parent = elem.parent();
    $parent.removeClass('my_signature_mouseover');
    var text = elem.val();
    var $span = $("#status span");
    $span.text(text);
    $span.show();
};
$("#status input").keyup(function (e) {
    var keyCode = e.keyCode || e.which;
    if (keyCode == 13) {
       func($(this));
    }
}).blur(function () {
    func($(this));
});
于 2009-09-06T06:18:46.877 回答