JQuery Find()。val()的动态内容

时间:2013-11-06 16:56:31

标签: javascript jquery dynamic find

我正在调用一个以HTML为参数的jQuery方法。

然后,我想通过input类检查"LastIdReceived"控件的HTML。总会只有其中一个。

然后我想找到为此控件设置的值(即:收到的最后一个控件的Id)。

但是,val()方法正在返回undefined。我想知道这是因为它是动态内容而不是DOM的一部分。

如果有办法解决这个问题,请分享一下。

这是我的功能:

 function AfterLoadingMoreFollowersOpinions(data) {
    var htmlObject = $(data);
    var object = htmlObject.find('.LastIdReceived');
    alert(object.val());  
}

编辑: 我的Controller返回一个PartialView作为ActionResult,然后被赋予Ajax调用的OnSuccess方法,如下所示:

OnSuccess = "AfterLoadingMoreFollowersOpinions(data);"

我认为它是正确地从这个调用中传递HTML,因为在JS中为htmlObject和object做一个ALERT返回[object object],这让我相信JS的那些部分正在工作(如果我是正确的我错了。我不知道更好的检查方法。)

PartialView呈现并通过(我假设)到JS函数的HTML如下:

<div>
<div class="PostedOpinionDiv" id="SkipToOpinion_1002">
<p><b>Id:</b> 1002</p>
<p><b>Author:</b> Joe Shmoe - 8</p>
<p><b>Opinion Subject:</b> Follower Opinion Subject - 2</p>
<p><b>Opinion:</b> Follower Opinion Text - 2</p>
</div>
<input type="hidden" class="LastIdReceived" value="1002" />
</div>

正如您所看到的,这是我想从JS函数(1002)获取的输入值。

1 个答案:

答案 0 :(得分:1)

您可以使用jquery的parseHTML()方法将HTML文本作为DOM使用,这是您给出的示例中的解决方案:

//Parse HMTL to DOM and find an item value
function AfterLoadingMoreFollowersOpinions(data) {
    var htmlObject = $.parseHTML(data);
    var object = $(htmlObject).find(".LastIdReceived");

    //alert item value
   alert(object.val());  
}

//Any HTML text
var htmlString = "<div>";
htmlString += "    <div class=\"PostedOpinionDiv\" id=\"SkipToOpinion_1002\">";
htmlString += "        <p><b>Id:</b> 1002</p>";
htmlString += "        <p><b>Author:</b> Joe Shmoe - 8</p>";
htmlString += "        <p><b>Opinion Subject:</b> Follower Opinion Subject - 2</p>";
htmlString += "        <p><b>Opinion:</b> Follower Opinion Text - 2</p>";
htmlString += "   </div>";
htmlString += "   <input type=\"hidden\" class=\"LastIdReceived\" value=\"1002\" />";
htmlString += "</div>";

//Call function and send HTML text
AfterLoadingMoreFollowersOpinions(htmlString);

看到工作:http://jsfiddle.net/6ZH7v/1/

文档如果您有兴趣:http://api.jquery.com/jQuery.parseHTML/