2016-07-21 8 views
0

Der folgende Code ist in eine Multiview eingebettet, ich möchte nur auf den Doc1Amount1 TextBox-Wert zugreifen, der Teil des BodyCode-Div ist geladen in das DocBody div.So verwenden Sie jQuery .find(), um einen Wert aus einem eingebetteten Objekt abzurufen

<asp:View ID="Tab2" runat="server"> 
    <div class="HeaderLine">02: Documentation</div> 
    <br /> 
    <asp:HiddenField ID="HiddenField1" runat="server" /> 
    //a<asp:Label ID="Label1" runat="server" Text ="Label1"></asp:Label>b 
    <div id="DocBody" /> 
    <script> 
    $("#DocBody").load('LabReportContent/DocumentationSub.aspx #BodyCode'); 
    $(window).load(function() { 
     var current = $('#DocBody'); 
     $("#HiddenField1").val(current.contents().find("#Doc1Amount1").val()); 
    }); 
    </script> 
</asp:View> 

Die div erfolgreich überschrieben werden, und alle geladenen Objekte wie erwartet angezeigt werden, aber der Fund-Befehl einen leeren Wert zurückzubringen.

Ich schrieb dies zunächst ohne die $(window).load, und dachte, der Inhalt von Doc1Amount1 nicht angezeigt, weil die Seite nicht richtig geladen wurde.

Aber das gleiche passiert immer noch nach dem Hinzufügen der Fensterlast zu diesem.

Jede Hilfe wäre willkommen, da ich relativ neu bei jQuery bin.

Antwort

1

Sie brauchen nicht contents(). Und Sie sollten den Code einfach nach dem load ausführen, weil Fensterlast zu früh sein kann. Sie können den Rückruf der .load() Funktion verwenden.

$("#DocBody").load('LabReportContent/DocumentationSub.aspx #BodyCode', function() { 
    var current = $('#DocBody'); 
    $("#HiddenField1").val(current.find("#Doc1Amount1").val()); 
    $("#Label1").text(current.find("#Label1").text()); 
}); 

Und Sie können die untergeordneten Elemente direkt durch den Kontext wählen, ohne find zu verwenden.

var current = $('#DocBody'); 
$("#HiddenField1").val($("#Doc1Amount1", current).val()); 
$("#Label1").text($("#Label1", current).text()); 
+0

Danke, eisbehr, –

+0

Sie sind willkommen, @Garry_G. :) – eisbehr

Verwandte Themen