3

以下を使用してクリックイベントのハンドラーを登録すると、次のようになります。

$('.drilldown-action > li').live('click', function(event){
    drilldown.loadActions($(event.target));
});

HTMLの場合:

<ul class="drilldown-action">
    <li data-action="Dummy"><a href="#">Dummy</a> Dum</li>
</ul>

ブラウザで(Chromeを使用して)aタグをクリックします。イベントが登録されたjQueryオブジェクトを取得するにはどうすればよいですか?要素がイベントターゲットになることを期待していliます。それがセレクターに入れたものだからです。この場合に使用できることはわかって.parent()いますが、下部のイベントターゲットではなく、セレクターに一致するオブジェクトを取得する方法はありますか?また.parent()、他の部分をliクリックすると、使用する必要がなくなるため、使用するのも面倒です。

4

3 に答える 3

7

e.targetリンクタグです。

ハンドラーにバインドされた要素であるタグthisを取得するために使用する必要があります。li

コード:

$('.drilldown-action > li').live('click', function(event){
    drilldown.loadActions($(this));
});

注: jQuery 1.7以降、この.live()メソッドは非推奨になりました。.on()イベントハンドラーをアタッチするために使用します。古いバージョンのjQueryのユーザーは.delegate()、を優先して使用する必要があります.live()

于 2012-10-31T15:22:53.427 に答える
2

はい、this他のイベントと同じように使用してください。

drilldown.loadActions($(this));
于 2012-10-31T15:23:23.380 に答える
1

この場合、私は常に私が望むものを渡すことを確認します:

$('.drilldown-action > li').live('click', function(event){
    drilldown.loadActions($(event.target).closest('li'));
});

jQuery apiのドキュメントによると、closest()は常に「li」要素を渡します。

説明:セット内の各要素について、要素自体をテストし、DOMツリーでその祖先をトラバースすることにより、セレクターに一致する最初の要素を取得します。 https://api.jquery.com/closest/

于 2016-02-22T12:33:03.513 に答える