5

私はこれが機能することを理解している1.7.2を使用しています:

// cell is a jquery representation of a <td> element
cell.append($("<input/>", { "type": "text" }).val(content));        
cell.children()[0].focus();
cell.children()[0].on("blur", function() {
    alert("blur");
}

入力ボックスが追加され、フォーカスを取得すると、javascript コンソールに次のように表示されます。

Uncaught TypeError: Object #<HTMLInputElement> has no method 'on'

ぼかし/フォーカスアウトイベントをキャッチする方法を誰かが知っていれば幸いです。

4

3 に答える 3

4

デリゲートイベントをバインドする必要があります。これらの入力に対するライブイベントは、後でDOMに追加されるため、ライブイベントハンドラーが必要です。

$(cell).on('blur focusout', ':text', function() {
   alert(this.value);
});

次に、次のようにトリガーします。

$(':input:first', cell).blur(); // or $(':text', cell).trigger('blur');

$(':input:first', cell).focusout(); // or $(':text', cell).trigger('focusout');.

あなたのコードによると

cell.children(':input:eq(0)').focus().on("blur", function() {
    alert("blur");
};

また

cell.children(':input:first').focus().on("blur", function() {
    alert("blur");
};
于 2012-06-02T12:28:46.003 に答える
4

[0]jQueryオブジェクトを使用してDOM要素にアクセスし、そのように動作しています。

最初のものだけが必要な場合は、を使用eq()してjQueryオブジェクトを取得する必要があります。

cell.children().eq(0).focus().on("blur", function() {
    alert("blur");
};
于 2012-06-02T12:29:55.847 に答える
0

.onjQueryオブジェクトではなくDOM要素を呼び出している場合は、次のことを試してください。

var input = $("<input/>", { "type": "text", val: content } );
cell.append(input);
input.focus();
input.on( "blur", function(){
    alert( "blur" );
});
于 2012-06-02T12:31:32.030 に答える