通过jquery访问动态加载的内容

时间:2012-12-30 16:33:35

标签: jquery asp.net-mvc

让我们想象一下情况。

我有一个ASP网站,我在这里加载一个div

所以我有

<div id="placeholder"></div>
<button onClick="javascript:test()">Bla</button>

我正在通过jQuery加载内容:

$("#placeholder").load("@Url.Action("Add","Products")");

现在我想拥有javascript测试功能,它的工作原理如下:

1)访问占位符div中加载的内容,找到一个表单(在此div中名为“FORM”,从Product Controller Add action加载)和fire validate事件:

我尝试过:$("#Form").valid()但它无效。

我该怎么办?

1 个答案:

答案 0 :(得分:0)

您所做的两个可能的问题:

  1. 您说该表单中包含名称 FORM,但您使用id选择器尝试找到它($("#Form"))。要么给它id,要么使用$("form[name=Form]")来找到它。我还要确保你在两个地方都使用相同的大小写(你说名字是FORM,但你在选择器中使用了#Form

  2. 您需要在加载之后找到它。 load为您提供回调(第二个参数)。

  3. 所以把它们放在一起:

    // Either give it an `id` (here I've assumed `id="theForm"` in the markup):
    $("#placeholder").load("@Url.Action("Add","Products")", function() {
        // This is the load callback, called when the load is complete
        $("#theForm").valid();
    });
    
    // Or use the selector `form[name=Form]` to find it:
    $("#placeholder").load("@Url.Action("Add","Products")", function() {
        // This is the load callback, called when the load is complete
        $("form[name=Form]").valid(); // <== Assuming the name is "Form" not "FORM"
    });
    

    附注:您不需要或不需要此javascript:部分:

    <button onClick="javascript:test()">Bla</button>
    <!--             ^^^^^^^^^^^---- lose this   -->
    

    它没有效果。您只能在需要网址的地方使用javascript:伪协议,例如href元素上的a。旧式onXyz DOM0处理程序总是使用整个页面的默认脚本,即JavaScript(除非您使用的是一些古老的Microsoft专有元标记)。使用javascript:实际上并不存在错误的原因是它最终成为label