2016-11-30 49 views
0

所以有了这一点的代码,我想要显示覆盖,.mg-show-info。 elInfoLink的点击功能按计划运行。现在我应该让它的父母可以点击,因为已经有另一个事件了,我想我会按照你在这里看到的那样去做。现在通过单击父项,它的子项的功能被调用,并且console.log有效,但是叠加层不显示。 为什么?代码只是部分执行

var elInfoLink = tile.querySelector('.info-link'); 
if (elInfoLink) { 

    $(elInfoLink).parent().click(function (e) { 
     $(elInfoLink).click(); 
    }); 

    $(elInfoLink).click(function (e) { 
    e.preventDefault(); 
    e.stopPropagation(); 
    var mg = document.querySelector('#mg'); 
    mg.classList.add('mg-show-info'); 
    mg.dataset.memoryOverlayShowId = tile.dataset.id; 
    console.log("foo"); 
    }); 
} 
+1

我想它与你的代码块中的e.stopPropagation();有关。它会停止事件传播,从而不会到达父级。 –

+0

[jquery中的e.stopPropagation()在锚标签上工作的可能重复](http://stackoverflow.com/questions/8952176/does-e-stoppropagation-in-jquery-works-on-anchor-tag) –

+1

@SwashataGhosh他需要'e.stopPropagation'。如果它被删除,你将在父母 - >孩子 - >父母的事件循环中...' – Rajesh

回答

0

编辑:由于@Rory McCrossan指出的那样,这是相当相当于你的符号;这工作正常。

方法.click()是在您的元素上注册点击事件侦听器的简写。你想要做的是:

$(elInfoLink).parent().click(function (e) { 
    $(elInfoLink).trigger('click'); 
}); 
+0

这与OP已具有的逻辑相同。见http://api.jquery.com/click:'这个方法是前两个变体中.on(“click”,处理程序)的快捷方式,而.trigger(“click”)' –

+0

你说得对, 我的错! – SinDeus

0

那么从有限的代码,它看起来像这里没有“部分执行”。 我会重新检查类mg-show-info是否被添加到正确的元素(如果该元素被正确选择)并且加载了相关的CSS。