0

セレクターを作成する正しい方法が見つからないようです。DIVの背景とメイン画像(存在する場合)でのみクリックを発生させることになっていますが、そのdivにある他の要素をクリックすると- hrefsなどのように-それは何もしないはずです。

私はこれを試しました:

$('#SHOWCASE, #SHOWCASE > img')

Showcase-はDIVのIDであり、imgはそれに直接添付された画像です。ただし、.Click関数を追加すると、リンクなど、そのdiv内の要素でトリガーされます。これらのリンクにも絶対位置があることに注意してください。

それで、これに対する解決策はありますか?

4

4 に答える 4

5

最も簡単な方法では、クリックされた要素がハンドラーをバインドした要素であるかどうかをテストします。

$('<selector>').click(function(event) {
    if(event.target === this) {
        // do something
    }
});

参考event.target

于 2012-04-30T10:54:56.110 に答える
2

イベントは DOM をバブリングするため、これは正常な動作です。イベント オブジェクトtargetの内部をチェックして、最初にクリックされた要素を確認する必要があります。

$('#SHOWCASE').on('click', function (e) {
    if ($('#SHOWCASE, #SHOWCASE > img').is(e.target)) {
        // Only do something if it was those elements.
    }
});
于 2012-04-30T10:55:01.490 に答える
0
$('#hello, #hello > img').on('click', function(e) {
    if(e.target == this) {
        console.log(this);
    }
});
于 2012-04-30T10:56:33.473 に答える
0

その div 内の他の要素が泡立つのを止める必要があります。jQuery の stopPropagation() のようなものがうまくいくはずです。それを #SHOWCASE のすべての子に追加します。

于 2012-04-30T10:54:53.500 に答える