使用jQuery与隐藏div中的元素?

时间:2011-04-19 19:30:40

标签: jquery asp.net jquery-ui

不知道这是否可行..

我有一个ASP.Net页面,上面有一个隐藏的div。当用户执行某些特定功能时,div变为可见(display='block')。这种情况发生在VB.Net代码背后有很多原因。

dvDetail.Style("display") = "block"

我需要让一些jQuery为隐藏div中的TextBox分配一个插件,但是我遇到了一个问题 - 我对jQuery有点新鲜。由于当时div的display='none'以及当用户执行导致div显示的操作时,似乎TextBox在加载后不存在于页面上。 $(document).ready因为它已经运行了。我已经在页面的非隐藏部分测试了功能,jQuery工作正常。

为了回应你的许多好答案 - 接下来的测试代码与我实际需要的一样接近 - 它实际上有效但它会导致隐藏的div在页面首次加载时变得可见而不是我的需要。

$(document).ready(function () {
    $('[id$=dvDetail]').show(function () {
        $('[id$=btnDelete]').click(function () {
            alert('Delete clicked');
        });
    });
});

5 个答案:

答案 0 :(得分:0)

我没有使用asp.net的经验,但是如果在DOM中加载了元素(div),jQuery应该能够找到它,不管它是隐藏的还是没有。您是否检查过元素是否确实在DOM中加载。您可以使用Chrome的开发人员工具或FF的firebug来检查(并调试javascript)。

答案 1 :(得分:0)

尝试将jquery代码放在$(document).ready函数之外,但要确保它在textbox html之后存在。

答案 2 :(得分:0)

ASP.NET控件属性.Visible = False与CSS属性display: none之间存在差异 - 如果控件设置为.Visible = False,则控件永远不会在客户端呈现,因此,任何客户端脚本都无法找到它。

检查为jcane86说确保控件实际上是在客户端呈现 - 它可能没有显示,但它应该在页面的实际HTML输出中。如果它在那里,jQuery应该能够找到它(如果您使用您选择的浏览器工具调试Javascript,您可以在JavaScript控制台中使用$("#MyClientSideId").show()进行测试,如Hunter所述。)

答案 3 :(得分:0)

您可以获得所有隐藏的元素:

$("div:hidden").each(function(){ alert($(this).attr("id")); });

希望有所帮助

答案 4 :(得分:0)

考虑以下html:

<div style="" id="hide">
  <textarea ></textarea>
</div>

我可以使用jquery操作隐藏的textarea,然后在链接结束时显示它。

 $("#hide").children('textarea')
.text('hello there')
.css({width: '300px', height: '300px', padding: '5px', border: '1px solid #ccc'})
.parent().show();

希望它有所帮助。干杯

PS:例如,如果在文档就绪完成后稍后加载元素,则需要使用.bind()方法或我最喜欢的.delegate绑定上面代码的事件。 ()