我觉得这很简单。但是,事实证明并非如此。我正在使用此代码:
<script type="text/javascript">
$(document).ready(function () {
$("button#submitComment").click(function () {
// Get the div containg the comment list
var commentList = $("#comments");
// Get the ID of the last comment displayed so server
// can query recent non-displayed comments
var lastId = $(".comment h4").last().attr("id");
// Get data to post to server
var commentData = "EntryId=" + $("input#EntryID").val()
+ "&Comment=" + $("textarea#Comment").val()
+ "&LastId=" + lastId;
$.post(
"/find/Comments/Comments",
commentData,
function (data) {
alert(data); // confirm server response
newComments = $(data).hide(); // hide elements so they can be animated after adding them to the DOM
commentList.append(newComments); // add to DOM
$(".comment").each(function () {
$(this).slideDown("fast") // animate
});
$("#Comment").attr("value", ""); // clear comment form
}
);
});
});
</script>
此脚本将评论发布到服务器。服务器使用标记形式回复发布的评论,以及自用户发布页面以来发布的任何评论。
当服务器返回单个注释的标记时,它的效果很好。当服务器响应多个评论时,firefox会打一个垫片。我收到此JavaScript错误:
错误:未捕获异常:[例外...“无法转换JavaScript参数arg 0 [nsIDOMViewCSS.getComputedStyle]”nsresult:“0x80570009(NS_ERROR_XPC_BAD_CONVERT_JS)”位置:“JS frame :: http://localhost:3437/Scripts/jquery-1.4.1.min.js :: anonymous ::第130行“数据:否]
这个错误即将来自jQuery核心,我不确定是什么触发了它。我知道如果我删除.hide()
和.slideDown()
并且只是添加标记,那么它可以毫无障碍地工作。但我想要花哨的slideDown动画: - )
有什么建议吗?
以下是服务器响应的示例:
<div class="comment" style="background:#eee; border:1px solid gray; padding:10px 10px 0 10px; margin-bottom:20px;">
<h4 id="94">Admin commented on Thursday, December 23, 2010 10:21 AM</h4>
<p>
asd
</p>
</div>
<div class="comment" style="background:#eee; border:1px solid gray; padding:10px 10px 0 10px; margin-bottom:20px;">
<h4 id="105">Owner commented on Thursday, December 23, 2010 10:27 AM</h4>
<p>
asd
</p>
</div>
<div class="comment" style="background:#eee; border:1px solid gray; padding:10px 10px 0 10px; margin-bottom:20px;">
<h4 id="106">Admin commented on Thursday, December 23, 2010 10:27 AM</h4>
<p>
asd
</p>
</div>
答案 0 :(得分:2)
啊,而不是做$(数据).hide()做
$(data).find('.comment').hide()
或者 $(数据).find(&#39;的.comment&#39;)ATTR(&#39;风格&#39;,&#39;显示:无&#39)。
当然第二个会覆盖你的样式属性。你可以将整个东西包裹在一个span或div中。
答案 1 :(得分:0)
这使我走上了正确的道路。我的问题是由我的数组中包含非jquery对象引起的。当我将它打印到控制台时,我得到了类似
的内容[jquery-div, <TextNode textContent=" ">, jquery-div]
当我将“.hide()”更改为“.filter(”div“)时,隐藏()”它修复了错误。