Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.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 如何通过onchange隐藏元素_Javascript_Jquery_Html_Css - Fatal编程技术网

Javascript 如何通过onchange隐藏元素

Javascript 如何通过onchange隐藏元素,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我有一个元素被设置为display:css中的none。 单击父元素时,将通过 document.getElementById('selectId').style.display = 'block'; 现在我希望在选择某个选项后,选择器消失 从onchange调用style.display='none'时,它会闪烁几秒钟,然后再次可见。我甚至用console.logobj.style.display检查了一下,确实显示变化很快 如何实现此行为:通过onchange显示='none' 纯Javs

我有一个元素被设置为display:css中的none。 单击父元素时,将通过

document.getElementById('selectId').style.display = 'block';
现在我希望在选择某个选项后,选择器消失

从onchange调用style.display='none'时,它会闪烁几秒钟,然后再次可见。我甚至用console.logobj.style.display检查了一下,确实显示变化很快

如何实现此行为:通过onchange显示='none'

纯JavsScript或JQuery并不重要

编辑:它看起来像上的onchange事件触发父对象的onclick,从而将显示重置为“block”

代码和解决方案:根据@AndyG的建议,我修改了onchange事件调用的函数,如下所示:

function selChanged(obj) {
    $(obj).click(function(event){
        event.stopPropagation();
    });
    obj.style.display = 'block';
}
现在它不再触发父级“onclick”。 下面是html代码:

<td onclick="showSelect(selId)">
    <select id="selId" onchange="selChanged(this)">
       <option>
         ....
       </option>
</td>
Whit jQuery

$'selectId'。隐藏以隐藏它

$'selectId'。显示以在jQuery中显示它。

$'selectId'。隐藏以隐藏它

$'selectId'。显示以显示它

尝试以下操作:

$(function() {
    $('select').on('change', function() {
        $(this).hide();
    });
});
试试这个:

$(function() {
    $('select').on('change', function() {
        $(this).hide();
    });
});

如果通过单击某个选项更改了选择,则此单击事件将冒泡到父元素,导致选择重新出现


事件。停止传播;在“更改”事件中,将阻止向父元素冒泡。

如果通过单击某个选项更改选择,则此“单击”事件将向上冒泡到父元素,导致选择重新出现


事件。停止传播;在更改事件中,将阻止向父级冒泡。

.hide和.show将帮助您;你剩下的代码是什么?听起来好像有什么东西把它转回来了。更多的代码会有所帮助。我猜,选择一个项目会使单击事件冒泡到父元素,从而再次导致其单击事件。event.stopPropagation会阻止这种情况,或者可能使用焦点而不是单击。尽管父级可能不会有焦点事件,除非它有一个tabindex。@AndyG是的,看起来是这样-我刚刚编辑了这个问题。谢谢你的建议,我会试试看。隐藏和显示会帮助你;你剩下的代码是什么?听起来好像有什么东西把它转回来了。更多的代码会有所帮助。我猜,选择一个项目会使单击事件冒泡到父元素,从而再次导致其单击事件。event.stopPropagation会阻止这种情况,或者可能使用焦点而不是单击。尽管父级可能不会有焦点事件,除非它有一个tabindex。@AndyG是的,看起来是这样-我刚刚编辑了这个问题。谢谢你的建议,我会试试。这个原理可以通过使用键盘选择一个选项选项卡,Alt-Down,Down,Enter来测试,它不需要点击。这个原理可以通过使用键盘选择一个选项选项卡,Alt-Down,Down,Enter来测试,它不需要点击。