2011-10-25 59 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'会做你想做的事。 –