2011-10-25 1 views
1

誰かが私を助けてくれることを願っていますが、まっすぐ進むはずですが、同じセルがクリックされた場合にonclickを強調表示するか、または強調表示する表を作成しました。これは私には問題ありません。私が問題を抱えているのは、セル内のinput:textまたはselect要素をクリックすると、まだトグルされているということです。ライブのクリックでtr/tdをハイライト表示しますが、入力/選択をクリックすると切り替えません

セレクタにnot句を追加する簡単な方法がありますか、またはselect/inputが以下でクリックされたかどうかを確認することによって簡単にできますか?

$("#grid td, #grid th").live('click', function(){ 
    ... 
    toggle highlight, image changes, link changes, etc, when conditions are met (currently works) 
    ... 
}); 

私は多分.not()関数を使用することができると思ったが、私はまだ、選択入力/をクリックするセルをクリックし、ではない場合、それはトグルしないかもしれないと思います。

助けや助けがあれば助かります。

答えて

3

を追加しましたが、イベントが親細胞に子要素からバブルアップされています。

あなたは1つが、イベントをトリガした要素をチェックすることであり、そのTD場合にのみ..このような何かをできるように、2つのことを行うことができます。

$("#grid td, #grid th").live('click', function(e){ 
    if (e.target.tagName.toLowerCase() === 'td' || e.target.tagName.toLowerCase() === 'th') { 
        //do your stuff here 
    } 

}); 

または入力にイベントを停止を見て、選択をクリックハンドラーをcancelBubbleまたはevent.stopPropogation

+0

tdまたはthにスパンまたは他の要素がある場合はどうなりますか? 'target.tagName'のチェックは機能しますか? –

+0

説明と支援ありがとう: – MrJ

+0

yup、それを引き起こしている要素がtdかthだけであるかどうかをチェックしています –

0

これを試してみてください:

$('#grid td input, #grid th input, #grid td select, #grid th select, #grid td textarea, #grid th textarea').live('click focus', function(event) { 
    event.stopPropagation(); 
}); 

編集:ここで起こっていただきましたselecttextarea

+0

で選ぶとどうなりますか? –

+0

が追加されました。あなたのソリューションは私のbtwより優れています。 –

+0

これは 'live'イベントで、処理される前にすべて泡立ちます。私は' stopPropagation'があなたが望むことをするとは考えていません。 –

関連する問題