1

ボタンがあるとしましょう#click

そして、次のように on click イベントをバインドするとします。

$('#click').click(function(){
   alert('own you'+'whatever'+$(this).attr('href'));
});

thisしかし、他の要素を参照したいと思います#ahref

それが名前付き関数である場合、私は単純に名前で参照します:

foo.call('#ahref');

.call()関数がインラインで呼び出され、名前がない場合、どのように使用できますか?

4

4 に答える 4

4

関数を使用proxyしてコンテキストを変更できます。

$('#click').click($.proxy(function() {
    alert('own you'+'whatever'+$(this).attr('href'));
}, $('#ahref')));
于 2012-09-02T15:38:54.767 に答える
2

thisjQuery が望んでいる値以外の値で関数を呼び出すように jQuery に強制することはできません。thisそうは言っても、次を使用して、あらかじめ決められた関数を呼び出す関数を jQuery に渡すことができます.bind()

$('#click').click(function() {
  // whatever
}.bind(someObject));

Function プロトタイプの.bind()メソッドは、渡したオブジェクトで元の関数 (匿名イベント ハンドラー) を呼び出す関数を返しますthis。これは新しいブラウザにあり、Mozilla ドキュメント サイトには shim があります。

編集$.proxy()— または、jQuery 自体の同様の機能に関する @dfsq の回答を参照してください。

于 2012-09-02T15:38:22.357 に答える
1

何かが足りないのかもしれませんが、他の要素に直接アクセスするのを妨げているのは何ですか?

$('#click').click(function(){
   alert('own you'+'whatever' + $('#ahref').attr('href'));
});
于 2012-09-02T15:38:14.923 に答える
0

何を求めているのか 100% 確実ではありませんが、次のようにコンテキストをバインドできます。

$('#click').click(function(){
   alert('own you'+'whatever'+this.attr('href'));
}.bind($('#ahref')));
于 2012-09-02T15:38:46.620 に答える