jquery可以't隐藏输入名称为“”的表单;风格”;

jquery can't hide a form with an input name of "style"?

本文关键字:风格 表单 输入 可以 jquery 隐藏      更新时间:2023-09-26

我试图在网站上隐藏一个表单,但它拒绝通过jquery隐藏。我可以手动设置元素的样式属性,但.hide()不会隐藏它。

考虑这个代码:

$(document).ready(function() {
    $('form').hide();    
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>
    <input name="style_name" value="small" type="hidden">
    <p>I AM hidden</p>
</form>
    
<form>
    <input name="style" value="small" type="hidden">
    <p>I should be hidden</p>
</form>

基本上,如果有一个名称为"style"的输入,它就无法隐藏表单。如果输入有不同的名称,它会很好地隐藏它。

发生这种情况有原因吗?

表单中输入元素的"name"属性用于填充表单DOM节点上的属性。您的名称"style"将覆盖表单的"style"属性,这意味着jQuery无法再访问本机样式对象。它需要这样做才能隐藏表单。

请注意,使用CSS仍然可以做到这一点。

$(document).ready(function() {
    $('form').addClass("hidden");    
});

CSS:

.hidden { display: none; }

那些隐含地践踏名称空间的旧习惯可以追溯到浏览器技术的早期。很难想象现在有人会认为这是一个好主意,至少如果没有一些合格的子空间(比如form.fields之类的)。