1

我有一个 html 页面,其中包含一个 id 为“frmCmt”的表单,我只想在其他文档中显示这个表单,我使用 jQuery .filter() 但现在可以工作并显示整页。

我的 jQuery 代码:

function showCommentForm(postID){
$.ajax({
type: "GET",
cache: true, 
url: "http://mysite.com/post/comment/"+postID,
success:(function(msg){
$("#commentContainer"+postID).html(msg).filter("#frmCmt") ;
return false;
})});

请帮忙。

4

2 回答 2

1

您当前的代码将无法工作,原因有以下三个:

  1. 您将所有msg内容作为 HTML 注入到您的元素中;.filter仅在发生这种情况后运行,因此它不可能工作。
  2. .filter从匹配的 jQuery 对象集中过滤项目,但是 tou 没有使用结果.filter来做任何事情,所以它再次不起作用。
  3. 在这种情况下,匹配集不包含任何#frmCmt元素,因此.filter将评估为“空”jQuery 实例;即使以某种方式使用它,结果也不会是您所期望的。

将代码更改为

var html = $(msg).find("#frmCmt").html();
$("#commentContainer"+postID).html(html);

msg这段代码从所需元素的内容创建一个 jQuery 对象,并.find在将其插入 DOM 之前将其归零。

于 2013-07-01T08:47:36.583 回答
0

您可能需要在find()这里使用而不是 .filter() ,过滤器仅在给定元素是顶级元素时才起作用msg

解决它的一种方法可能是

$(msg).find('#frmCmt').appendTo($("#commentContainer"+postID).empty())

或者您可以使用 .load() 函数

$("#commentContainer"+postID).load("http://mysite.com/post/comment/"+postID + ' #frmCmt')
于 2013-07-01T08:47:41.503 回答