Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何通过忽略dom来获取单击的元素?_Javascript_Jquery_Html_Css - Fatal编程技术网

Javascript 如何通过忽略dom来获取单击的元素?

Javascript 如何通过忽略dom来获取单击的元素?,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我试图创建一个颜色选择器,但遇到了一个大问题。例如,如果我想单击某个文本后面的div以更改其颜色,我将无法执行此操作,因为该文本将覆盖背景。我可以在这里做些什么,这样我就可以在不包含所有元素都具有的dom框的情况下单击该元素?通过运行stopPropagation()它将只选择单击的元素 $(".ColorCardBackgroundView").click(function(e) { e.stopPropagation(); document.getElementById('C

我试图创建一个颜色选择器,但遇到了一个大问题。例如,如果我想单击某个文本后面的div以更改其颜色,我将无法执行此操作,因为该文本将覆盖背景。我可以在这里做些什么,这样我就可以在不包含所有元素都具有的dom框的情况下单击该元素?

通过运行
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()
如果它们不是嵌套的,那么它们是必需的。因为它们是嵌套的,所以使用它是有意义的。将来你的问题应该包含一个答案。