Javascript 如何通过忽略dom来获取单击的元素?
我试图创建一个颜色选择器,但遇到了一个大问题。例如,如果我想单击某个文本后面的div以更改其颜色,我将无法执行此操作,因为该文本将覆盖背景。我可以在这里做些什么,这样我就可以在不包含所有元素都具有的dom框的情况下单击该元素?通过运行Javascript 如何通过忽略dom来获取单击的元素?,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我试图创建一个颜色选择器,但遇到了一个大问题。例如,如果我想单击某个文本后面的div以更改其颜色,我将无法执行此操作,因为该文本将覆盖背景。我可以在这里做些什么,这样我就可以在不包含所有元素都具有的dom框的情况下单击该元素?通过运行stopPropagation()它将只选择单击的元素 $(".ColorCardBackgroundView").click(function(e) { e.stopPropagation(); document.getElementById('C
stopPropagation()
它将只选择单击的元素
$(".ColorCardBackgroundView").click(function(e) {
e.stopPropagation();
document.getElementById('ColorCardBackground').jscolor.show();
});
你能用代码和截图详细说明你的问题吗?你想问什么还不清楚,显然这是一个关于你逻辑的问题,而不是问题dom@ncubica看一看更新后的帖子。如果文本在其中,请将点击事件委托给bg div。否则,委托给
,并观察所有单击。如果它们来自经批准的来源,请获取颜色。您可以对包含文本的元素使用指针事件:none
。它将使该元素忽略所有鼠标/指针事件(click
,mouseover
,mouseleave
,mouseenter
等等)。然后像@hungerstar提到的那样。委托给顶部容器,然后当事件冒泡时,所有父级检查它们是否符合颜色选择器限制(背景或文本),然后停止冒泡事件并处理它。这是对您自己问题的回答还是评论?这是一个答案,它正是我所需要的。你必须有.ColorCardBackgroundView
元素嵌套在彼此之间吗?是的,子元素是嵌套的。好吧,我想知道为什么e.stoppropigation()
如果它们不是嵌套的,那么它们是必需的。因为它们是嵌套的,所以使用它是有意义的。将来你的问题应该包含一个答案。