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);

funcその上でぼかしたり「Enter」を押したりすると実行したいです。ただし、上記のコードはぼかしの場合にのみ機能し、「Enter」を押した場合、「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 に答える