无法重新显示隐藏的下拉列表

时间:2011-10-31 06:17:06

标签: jquery

我之前隐藏了我的下拉列表时遇到问题。

所以根据一些动作,我在我的下拉列表上做了一个hide(),效果很好。但是后来如果其他动作发生在我想显示下拉列表增益的地方,我会在下拉指针上得到一个空引用:

在某些时候我会根据用户操作隐藏此下拉列表:

var ddlElotizType= "#" + document.getElementById('<%=ddlElotizType.ClientID %>');

$('#' + ddlElotizType.id).hide();    

然后基于另一个动作,我尝试再次显示它,以便在它上面做一个show():

    var dropdown = document.getElementById('<%=ddlElotizType.ClientID %>');
    $('#' + dropdown.id).show();
    $('#' + dropdown.id).attr("disabled", false);

...
    <fieldset>
        <p class="formLabel"><%="Car Type" %></p>
        <p class="formField"><label id="singleCarTypeText" /><asp:DropDownList ID="ddlElotizType" runat="server" /></p>
    </fieldset>

当我尝试再次通过id引用它时,我得到一个js错误,说“dropdown is null”;

似乎我可以通过上面的元素id引用下拉列表,只有它已经可见但是我认为如果它被隐藏它应该无关紧要,它仍然在DOM树中吗?仍然可以访问...它必须是。

2 个答案:

答案 0 :(得分:0)

可能因为无法访问已禁用的方法。您只需要使用.hide()隐藏它,而不是禁用它。你也在混合标准的DOM方法和jQuery。 jQuery已经为你执行了搜索。以下是如何显示元素的方法。

var dropdownId = '<%=ddlElotizType.ClientID %>';
$('#' + dropdownId).show();

隐藏元素时,请不要禁用它。

答案 1 :(得分:0)

这里使用的是双"#"。请避免这样做。

var ddlElotizType= "#" + document.getElementById('<%=ddlElotizType.ClientID %>');

正确的方法:

编辑:

商店ID的变量:

var ddlElotizTypeID='<%=ddlElotizType.ClientID %>';

像这样隐藏

$('#'+ddlElotizTypeID).hide(); 

像这样显示DropDownList。

$('#'+ddlElotizTypeID).show();  

这样可行。