Javascript 如何通过onchange隐藏元素
我有一个元素被设置为display:css中的none。 单击父元素时,将通过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
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来测试,它不需要点击。