1

リンクがクリックされたときに実行されるこの関数があります。しかし、それには問題があるようです。同じリンクにテキストを使用する場合。関数はうまく実行されるようです。しかし、代わりに同じ場所に画像を配置すると. イベント ハンドラ関数が機能していないようです。

このためのフィドルを作成しました:http://jsfiddle.net/bkvirendra/5QqUB/

リンクをクリックすると、ul リストが表示されます。ユーザーがリンクの代わりにどこかをクリックすると、ul リストが消えます。そのため、テキストの代わりに画像を配置すると、機能していないようです!! 画像をクリックしたときに同じ ul リストを表示するにはどうすればよいですか?

4

2 に答える 2

1

問題は、画像をクリックすると、イベント ターゲットがimgタグではなくタグになるためaです。

これを試して:

$(".item").hide();
$("#a").click(function(e) {
    e.stopPropagation();
    $(".item").show();
});

$(document).click(function() {
    $(".item").hide();
});

フィドルの例

$(".item").hide()行を削除し、display: none代わりに CSSで使用することも検討する必要があります。

于 2012-05-26T21:50:52.637 に答える
0

e.targetクリックされた要素を返すために発生するため、画像を返しています。このコードを試してください:

$("html").click(function(e) {
    if (e.target == document.getElementById("a") || e.target.nodeName=='IMG') {
        $(".item").show();
        //alert(1);
    } else {
        $(".item").hide();
        //alert(2);
    }
});​
于 2012-05-26T21:51:31.870 に答える