如何将点击事件从一个div传递到另一个div?

时间:2012-04-03 09:27:25

标签: javascript html css events

我需要找到一种方法将点击事件从顶部的div传递到它下面的div(并忽略更高div上的点击)。 有一种模拟click事件并将其传递给另一个div的已知方法,但这不是一种自然行为,也是最不希望的选择。

事件冒泡似乎没有帮助,因为顶部的div不包含在下面的那个..

有什么想法吗?

这是一个jsfiddle示例:

http://jsfiddle.net/QKjUx/

如果删除“overlay”div,则可以单击其中一个元素。虽然它在那里,但你不能。可以将事件传递给下面的div,但是,位置很重要 - 可以有一个我希望用户能够点击的链接。

3 个答案:

答案 0 :(得分:10)

将此css属性添加到叠加层div

   pointer-events: none;

您可以在http://robertnyman.com/2010/03/22/css-pointer-events-to-allow-clicks-on-underlying-elements/

了解更多相关信息

答案 1 :(得分:1)

您可以通过点击另一个div来触发一个div上的点击事件。

您可以创建一个事件,例如

//A function to fire an event
function eventFire(el, etype){
    if (el.fireEvent) {
      el.fireEvent('on' + etype);
    } else {
      var evObj = document.createEvent('cClick');
      evObj.initEvent(etype, true, false);
      el.dispatchEvent(evObj);
    }
}

var div1 = document.getElementByID("firstDiv"); //find the first div
div1.onClick = function() { //attach a onclick event
   //Now select the element and fire the event
   var div2 = document.getElementById("seconddiv"); //select the second div
   eventFire(div2, 'click'); //fire the click event
};

答案 2 :(得分:0)

您是否需要div结构进行渲染? - 我想你可以设置你的第一个div显示为内联,然后将其他div放入其中,这样外部div就会有0高度,然后你就可以点击里面的每个div。