0

次のコードがあります

HTML:

<div id="test">
    <p id="hello">HELLO</p>
    <p id="no-hello">NO HELLO</p>
</div>

jQuery:

 $('#test').click(function() {
       alert($('#hello').is(':hover'));
        if ($('#hello').is(':hover')) {
            alert('hello');
        }
    });

私はjQuery 1.6を使用していましたが、うまくいきました。しかし、何らかの理由で代わりに 1.9 が使用され、これは機能しなくなりました。ネットで解決策を見つけようとしましたが、これに関するヒントは得られませんでした。

ありがとうございます。

4

2 に答える 2

0

このコンテキストでクリックされた領域のIDが必要な場合は、次のことを試すことができます。

$('#test').click(function(event) {
   alert(event.target.id);
    if (event.target.id == "hello") {
        alert('hello');
    }
});

サンプル

ただし、指定したメソッドはjQuery1.9以降ではサポートされていません

あなたの方法の1つの代替案を参照してください:

$('#test').click(function() {
   alert($('#hello:hover').length ==1);
    if ($('#hello:hover').length) {
        alert('hello');
    }
});

サンプル2

于 2013-03-20T14:46:11.340 に答える
0

AV が指摘したように、あなたのメソッドは jQuery 1.9 以降では機能しません。

なのに、なぜこのような方法でこれを行うのですか?

hello2 つの異なるクリック イベントをとに単純に割り当ててみませんno-helloか?

function doOnBoth() { ... };

$("#hello").click(function () {
    doOnBoth();
    alert('hello');
});

$("#no-hello").click(function () {
    doOnBoth();
    alert("not hello");
});

または、両方の要素にクラスを割り当ててから、クリック イベントをそのクラスに割り当て、ID のクリック イベントを分離することもできます。

問題は、ホバーを最初にトリガーせずにクリックをトリガーできることです。

あなたが達成したいことを私が手に入れなければ...

于 2013-03-20T14:51:17.590 に答える