2012-02-03 5 views
2

ページの背景をクリックすると(#page)、コンテンツをクリックしたときにイベントが発生することはありません(フローティングショッピングカートを隠すなど)。ですから、このイベントがスペース上で発生する必要があります:ページマイナスコンテンツ。どのように達成するのですか?おかげ親部門からセレクタを除外する

私はこのような構造がある場合:あなたは、イベントのターゲットをチェックし、行動することができ

<body> 
<div id="page"> 
    <div id="content"> 
    here 
    </div> 
</div> 
</body> 

var outer= jQuery("#page"); 
jQuery(outer).click(function(){ 
    jQuery(cos_de_cumparare).toggle(); 
}); 

答えて

2

を適宜

var outer= jQuery("#page"); 
outer.click(function(e){ 
     //trigger the event only if the target of the click is the page 
     if(e.target.id === 'page'){ 
     alert('click'); 
     } 
}); 

http://jsfiddle.net/wNsd7/

+0

私はこれをテストしました。これは最も洗練された解決策です。皆さん、皆さん、お世話になりました。よろしくお願いします。 – Kandinski

1

これを行うためにここにフィドルはあなたが停止することができますイベントはチェーンを伝播します。

これを行うための通常の方法は、そのようなことを子要素にクリックイベントを添付してからの伝播を停止することがあります:

$("#page div").click(function(e){ 
    e.stopPropagation(); 
}) 

Here's an example

+0

いいえ、これは彼がやろうとしていることとは関係ないと思います –

+0

私は尊重して同意しません:) –

+0

ああ、あなたはそれを他の中毒に意図しました!これは間違いなく動作しますが、イベントの委任に問題を引き起こす可能性があります。 :) –

1

はこれを試してみて、http://jsfiddle.net/qgUjb/4/

$("#page").click(function(event) { 
    if(event.target.id == "content") return; 
    $("#content").toggle(); 
}); 
をチェック
関連する問題