3

選択した行に基づいてクリックすると、javascript を使用して特定のメニューを開くテーブル行があります。<a href>リンクを開くか、別の場所にリダイレクトするために使用されるタグもあります。

問題は、<a href>リンクをクリックすると、メニューを開くテーブル行も実行されることです。

その PHP/Javascript 言語。

これは、テーブル tr のスクリプトです。

echo "<tr onclick=\"enableDialogs(1)\";>";

同じ行の<a>リンクの場合:

echo "<td><a href='?folder={$filedir}'>{$list}</a></td>";

質問は、クリック機能で両方が重複しないようにするにはどうすればよいですか?

4

3 に答える 3

2

イベントバブリングの典型的なケースがあります。コメントのいくつかは、サブスクライブされた要素からのコールバックを利用することを示唆しているので、最初の引数を参照し、タグからのバブリングを停止します。myElementの1つのDOMノードであると想定します<a>

myElement.addEventListener("click", function(e) {
   e.stopPropagation();
}, false);

もちろん、jQueryコールバックは同じように機能します

$(myElement).click(function(e) {
    e.stopPropagation();
});
于 2012-07-30T02:58:35.493 に答える
2

メニューが既に開いているかどうかを確認する単一の関数を作成します。

開いている場合は、引き続きリダイレクトするか、コードが現在行っていることをすべて実行します。そうでない場合は、単に開きます。

基本的に、関数にすべてを任せてください。

于 2012-07-30T02:49:10.617 に答える
1

イベントの伝播を停止する必要があります。

デモを参照してください

JavaScript コード:

function stopPropagation(e) {
    if(!e) var e = window.event;

    if (e.stopPropagation) {
        e.stopPropagation();
    } else {
       e.cancelBubble = true;
       e.returnValue = false;
    }
}

PHPコード:

echo "<td><a href='?folder={$filedir}' onclick=\"stopPropagation(event)\">{$list}</a></td>";

</p>

于 2012-07-30T03:13:37.717 に答える