1

2つのリンクを含むリストアイテムがあるとします。

<li>
   <a href="foo.htm">Foo</a>
   <a href="bar.htm">Bar</a>
</li>

ユーザーが「Foo」をクリックした場合、ユーザーをfoo.htmに送信します。ユーザーがまたは「バー」のいずれかの部分をクリックした場合、<li>ユーザーをbar.htmに送信します。<li>クリックして「Foo」にクリックするとユーザーがbar.htmに移動するクリックイベントリスナーをアタッチすると心配です。

4

4 に答える 4

5

event.stopPropagation()を使用してみましたか

$("a[href='foo.html']").click(function (event) {
    event.stopPropagation()
});
于 2012-09-18T16:50:29.950 に答える
2

このようなもの。とにかく指定された場所へのリンクを取得したいので、stopPropagationは必要ありません。

$("li").click(function(e){
    //just in case the click on li is processed before link click
    if($("a[href='foo.html']").is(e.target)){
        window.location.href = "foo.html";
    }
    else {
        window.location.href = "bar.html";
    }
});
于 2012-09-18T17:24:08.953 に答える
0

次のコードで問題を解決できます。

$("li").click(function (e) {
            if(e.target.nodeName == "A" && e.target.href.indexOf("foo.html") !== -1){
                //send foo.html
            }
            event.stopPropagation();
            // send bar.html
           return false.
        });
于 2012-09-18T17:11:43.217 に答える
0

event.stopPropagation()FooとBarの両方のハンドラーで使用する必要があります。ここで実用的なソリューションを参照してください

便宜上、ここにjsfiddleコードを貼り付けます

HTML:

<li id="l1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
   <a href="http://www.google.es/q=foo" id="foo">Foo</a>
   <a href="http://www.google.es/q=bar" id="bar">Bar</a>
</li>

JAVASCRIPT:

$('#foo').bind('click',function(event) {
    event.stopPropagation();
});
$('#bar').bind('click',function(event) {
    event.stopPropagation();
});
$('#l1').bind('click',function() {
    window.location.href = $('#bar').attr('href');
});​
于 2012-09-18T17:15:48.030 に答える