Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/75.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 单击包含的元素也会有效地(但错误地)单击其容器_Javascript_Html_Css - Fatal编程技术网

Javascript 单击包含的元素也会有效地(但错误地)单击其容器

Javascript 单击包含的元素也会有效地(但错误地)单击其容器,javascript,html,css,Javascript,Html,Css,这是 考虑最左边的列标题,标题文本为“Undr”,下面是该列标题的简化html: <th class="underlying" onclick="toggleColSelect(this);"> <img class='ad' onclick="toggleColSortOrder(this);"> Undr </th> Undr 用户可以在列标题中执行两项操作: <th class="underlying" onclick="to

这是

考虑最左边的列标题,标题文本为“Undr”,下面是该列标题的简化html:

<th class="underlying" onclick="toggleColSelect(this);">
    <img class='ad' onclick="toggleColSortOrder(this);">
    Undr
</th>

Undr
用户可以在列标题中执行两项操作:

<th class="underlying" onclick="toggleColSelect(this);">
    <img class='ad' onclick="toggleColSortOrder(this);">
    Undr
</th>
  • 通过单击列标题,选择并取消选择列编辑:当列标题有黄色背景时,列被选中;当列标题有白色背景时,取消选中

  • 通过单击向上/向下箭头图像,在列内容上选择升序或降序排序

  • 但是,单击图像也会选择/取消选择我不想要的列。当他点击图片时,我只想切换排序顺序;我不想在列上切换选择

    我的JavaScript函数
    toggleColSortOrder()确实只切换排序顺序;但是,当用户单击图像时,选择列的功能似乎也会被调用(错误)

    我尝试过的:我认为这可能是工作中冒泡的表现,我尝试了两个函数中返回真、假和零的所有组合。所有这些都没有任何效果。我希望避免进一步攻击JavaScript


    问题:如何通过更改html或css来阻止函数
    toggleColSelect()当用户在向上/向下箭头图像内单击时被调用

    您可以通过添加

    event.cancelBubble = true;
    

    你的职能。查看此提琴:

    您可以通过添加

    event.cancelBubble = true;
    

    你的职能。看到这把小提琴:

    这是我的理论,因为你的
    标签在你的
    标签里面,你不能在没有先通过
    点击的情况下点击
    。如果有办法取消这两个标记的嵌套,我会假设它们的函数将被单独调用。可能使用
    对准正确的位置。我将尝试使用firebug对我刚才所说的内容进行实时调整,看看(如果它没有破坏javascript)是否有效,然后我会报告


    祝你好运。

    这是我的理论,因为你的
    标签在你的
    标签里面,你不能在没有通过
    先“点击”的情况下点击
    。如果有办法取消这两个标记的嵌套,我会假设它们的函数将被单独调用。可能使用
    对准正确的位置。我将尝试使用firebug对我刚才所说的内容进行实时调整,看看(如果它没有破坏javascript)是否有效,然后我会报告


    祝您好运。

    正如Tomalak指出的那样,
    的单击事件会冒泡到父级
    ,因此您必须在函数中另行指定。另外,为.

    添加对
    event.stopPropagation()的调用。

    正如Tomalak指出的那样,
    的单击事件会冒泡到父级
    ,因此您必须在函数中另行指定。另外,为添加对
    event.stopPropagation()
    的调用。

    我在使用Chrome的站点上没有发现问题。你用的是什么浏览器?哦,如果你想让专门研究javascript的人回答这个问题,请确保将该标记添加到这篇文章中,否则它会被忽略。@Wex--谢谢!我应该说什么构成了一个选定的专栏:它是一个黄色的背景。我添加了那个编辑。你会发现(除非我疯了)问题出现在Chrome 12.0.742.91中。@Wex--你说得对,我道歉。这个问题不会发生在其他专栏中。很抱歉。现在我真的很困惑:-)我一直在使用Firefox。我想你是说“其他浏览器”;)我没有看到你使用Chrome网站的问题。你用的是什么浏览器?哦,如果你想让专门研究javascript的人回答这个问题,请确保将该标记添加到这篇文章中,否则它会被忽略。@Wex--谢谢!我应该说什么构成了一个选定的专栏:它是一个黄色的背景。我添加了那个编辑。你会发现(除非我疯了)问题出现在Chrome 12.0.742.91中。@Wex--你说得对,我道歉。这个问题不会发生在其他专栏中。很抱歉。现在我真的很困惑:-)我一直在使用Firefox。我想你是说“其他浏览器”;)我确实试着用firebug来修改它,但是它破坏了javascript函数调用,因此我无法完全测试我的理论。我确实试着用firebug来修改它,但是它破坏了javascript函数调用,因此我无法完全测试我的理论。