7

私はこの簡単なコードを持っています: here

$(".btn").on('click',function () {

  $(".a").trigger('click');
});

$(".btn2").on('click',function () {

  $(".a")[0].click();
});

アンカーを押すことをシミュレートしようとしています。

しかし、jQuery の を使用するtriggerと、機能しません (なぜですか?)

"jsobj".click()funcを使用すると、機能します。

jQuery のドキュメントを読んでも、そうすべきではない理由がわかりません。

ヘルプ ?

PS: Chrome を使用しています。

4

3 に答える 3

7

実際$(".a").trigger('click');にはクリックイベントをトリガーしますが、リンクをクリックするという意味ではなく、すでにイベントハンドラーがある場合はイベントハンドラーを実行します。

$(".btn, .btn2").on('click',function () {
    $($(".a")[0]).trigger('click'); // first element
});

$(".a").on('click', function (e){
    alert(e.target);
});​

与えられた例は のクリック イベントをトリガーし、aそのイベント用に既に登録されているハンドラー (匿名関数) を実行します。

$(".a").on('click', function (e){...});

デモ。

于 2012-07-14T19:56:09.713 に答える
3

生の JavaScript ノードを返すため$(".a")[0]、そのために jQuery オブジェクト メソッドを使用することはできません。

于 2012-07-14T19:14:36.503 に答える
2

これは、JQuery.trigger()が実際にはネイティブ イベントをトリガーしないためです。たとえば、スクリプトでこれを試してください。

$(".btn").on('click',function () {

  $(".a").trigger('click');
});
$(".a").click(function(){alert('triggered!')});

JQuery を使用してコスチューム ハンドラーを作成すると、THEN.trigger()メソッドでイベントがトリガーされます。

更新:これは非常に興味深いです。<a>タグと でのみ発生するようhrefです。これをチェックしてください

于 2012-07-14T19:24:01.333 に答える