2011-12-18 1 views
1

私はドロップダウンの数を持って、メニューの右それらの特定のdivの下にonClickイベントで呼び出され、ユーザーが他の場所でクリックしたときに、私も(アクティブな)それらのドロップダウンを後退させる順序どおりwindow.onclickセットを持っています特定のdivで "onclick"が呼び出されたときにwindow.onclickイベントを無効にする方法はありますか?

(なぜなら window.clickの)I(ドロップダウンを持っている)のdivをクリックし、ドロップダウンが有効化(メニューが作成されます)、同時に後退なっている

が作成したばかりのメニューのされ、破壊されたばかり今

、それと同時に、!window.onclickクリックした要素がドロップダウンリストのdivの上にない場合、実行するための回避策はありますか?

愚かな質問、初心者から。 ありがとうございます!ここ

はdiv要素のonclickのがメニューを引き出すことになっている..!サンプルコードだ - とwindow.onclickは、メニュー(拡張されているすべての彼のメニューの)

<html> 
    <style type="text/css"> 
    .bar{ 
    width: 30px; 
    height: 30px; 
    background-color: black; 
    display: none; 
    } 
    </style> 
    <script type="text/javascript" > 
    function fire(){ 
    document.getElementById("bar").style.display="block"; 
    } 
    window.onclick=unfire; 
    function unfire(){ 
    if(document.getElementById("bar").style.display== "block") 
    document.getElementById("bar").style.display="none"; 
    } 
    </script> 
    <input type="button" value="foo" onclick="fire()"> 
    <div id="bar" class="bar"></div> 
    </html> 
を撤回することになっています

編集:あなたがツリーを伝播するイベントを防ぐためにe.stopPropagation()(ブラウザ)またはe.cancelBubble = true(IE)を呼び出すことができるコードサンプル

+0

[イベントの伝播をインラインonclick属性で停止する方法](http://stackoverflow.com/questions/387736/how-to-stop-event-propagation-with-inline-onclick-attribute) –

答えて

1

これは、特定のDOM要素のイベントを発生させるだけでなく、子DOM要素からイベントを引き続き発生させる「イベントバブリング」というメカニズムが原因で発生します。あなたのページの冒頭に到達してください。

たとえば、jqueryライブラリを使用すると、このデフォルトアクションが発生しないようにする方法が提供されます(event.stopPropagation())。

ネイティブJSコードでも同じ動作が得られるのかどうかはわかりませんが、jQueryを使用できるかどうかを教えてください。コード例を示します。

おかげで、

+0

'event.stopPropagation()'は実際にはW3C準拠のイベントオブジェクトのメソッドです。 –

+0

@Felix:以前は、感謝していませんでした。 :) –

+0

それはそのように綴られていないことを除いて。 – SLaks

1
function doSomething() { 
    if (this.id == "myId") return; 
    // else do Something 
} 
+0

私はメニューを撤回するためにそれをチェックしている。私は窓を止める必要がある。火からのクリック! –

1

を追加しました。

+0

'return false'は、伝播ではなくデフォルトのアクションのみを防止します(両方ともjQueryでのみ動作します)。 –

+0

@FelixKling:私はそれを知らなかった。ありがとう。一定。 – SLaks

+0

@felixkling、それがネイティブjsを使用して伝搬するのを防ぐ方法は? –

0

あなたが代わりにdivタグにonmousedownをトリガーにしたいです。

+0

これは、右クリックするとalspは元に戻ってきますか? –

関連する問題