我有一个div
表,该表的每个TD都有一个事件onClick
。
但有时候,我需要在这张桌子前面显示一些文字,尽管如此,这篇文章不会弄乱我桌子的TD。
所以我的问题是,我需要在表格前面显示一个文本,但是当我点击这个文本时,它不会影响任何内容,文本后面正确点击的TD应该调用它的事件。
我有#div1
和#div2
,#div1
落后,#div2
是前线(两者都是position:absolute
)。
因此,#div1
就在那里,但它是不可见的,只显示#div2
。
尽管只显示了#div2
,但我需要在#div1
前面显示来自#div2
的文字。
为了做到这一点,我在span
上设置#div1
并设置了span z-index:1
。
这样,#div1
仍未显示,但其span
为。
一切都很好,但我现在遇到了一个新问题。
我需要点击#div2
(正面),并在整个div上获取事件。
即使有来自#div1
的文字,它也不应该有商业,只是展示。
阅读很难理解,所以我做了Fiddle。
点击红色“#div1中的Text1 ...”,我需要它来提醒TD html内容!
答案 0 :(得分:1)
您可以尝试以下解决方法:http://jsfiddle.net/W9jy5/5/
<强>的JavaScript 强>
$(document).ready(function(){
$("#div2").click(function(){
clickedOnDiv2();
});
$('#span1').click(function (e) {
var div2 = $('#div2'),
offset = div2.offset();
if (e.pageX > offset.left && e.pageX < offset.left + div2.width() &&
e.pageY > offset.top && e.pageY < offset.top + div2.height()) {
clickedOnDiv2();
}
});
function clickedOnDiv2() {
alert('#div2');
}
})
在此解决方法中,span元素上有一个click事件侦听器。如果用户单击Text1并且单击结束#div2,则执行clickOnDiv2
。
在这里,它回答了你的评论http://jsfiddle.net/W9jy5/17/中的问题。 这是跨浏览器。
答案 1 :(得分:0)
由于#div1
和#div2
是DOM兄弟,因此您无法“捕获”#div1
中#div2
的事件。由于SPAN
是#div1
的后代,但您仍需要与#div2
相同的处理程序,因此需要在多个元素上附加侦听器或重新排列DOM。 / p>
解决此问题的一种方法是将点击委托给父div:
$("#container").on('click', '#div2, #div1 span', function(){
alert("#div2");
})
答案 2 :(得分:0)
您可以通过一些CSS点击“{1}}点击”
#div1 span1
它应该可以在FF和webkit浏览器中使用,但是你对IE8和更低版本的运气不好。