2011-10-25 57 views
1

我希望有人能幫助我,我想那一定是直線前進,但我覺得我失去了一些東西不切換......我製作了一張桌面,如果點擊了同一個單元格,它將突出顯示onclick或取消突出顯示。這我沒有問題。我遇到的問題是,如果單擊輸入:文本或單元格內的選擇元素,它仍會切換。切換亮點TR直播點擊/ TD,但如果點擊輸入/選擇

是否有添加在選擇一個不是條款的一個簡單的辦法,或者如果被點擊內下方選擇/輸入看見了什麼?

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

我想也許可以使用.not()功能,但我想,如果我仍然單擊單元格,但不能點擊輸入/選擇它可能不切換。

任何幫助或幫助將是巨大的!

回答

3

請告訴我這裏發生的事件從子元素與母細胞冒泡。

你可以做兩件事情,一個是檢查哪些元素會觸發事件並只允許它,如果它是一個TD ..是這樣的:

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

}); 

還是看看輸入停止活動,然後選擇單擊處理程序與cancelBubbleevent.stopPropogation

+0

如果在td或th有一個跨度或其他元素,該怎麼辦? 'target.tagName'檢查工作嗎? –

+0

感謝您的解釋和幫助:) – MrJ

+0

燁,中頻如果元素觸發它是TD還是個正在檢查只 –

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

因爲這是一個'活的'事件,它在處理之前一直冒泡,我不相信'stopPropagation'會做你想做的事。 –