说有一些元素浮动,我想做一些当我点击任何(divs,体,任何…),但指定的一个(例如div#special)。
我想知道是否有一个更好的方式来实现这除了以下方法我可以想到…
$(document).bind('click',function(e) { get mouse position x,y get the element (div#special in this case) position x,y get the element width and height determine if the mouse is inside the element if(inside) do nothing else do something });
解决方法
为了处理“当这个元素被点击时这样做”的情况,一般的方法是向处理“do this”情况的文档添加一个事件处理程序,然后向“except this”元素添加另一个事件处理程序,只是防止点击事件冒泡到文档;
$('#special').on('click',function(e) { e.stopPropagation(); }); $(document).on('click',function (e) { // Do whatever you want; the event that'd fire if the "special" element has been clicked on has been cancelled. });
对于那些使用早于jQuery 1.7的版本(就像这个问题被询问的情况),你将不能使用on();而是简单地将on()
的2种用途替换为bind()
;在这种情况下的签名是相同的。
演示在这里; http://jsfiddle.net/HBbVC/