私は、ユーザーがステータスを更新したときにコメントできるステータス更新システムを持っています。しかし、問題は、返信をクリックすると、何も書く時間を与えなくても、コメントボックスが開いたり閉じたりすることです。
ステータスの更新を行うときとコメントがあるかどうかをチェックするコードが1つあります(ステータスを更新したばかりなので、コメントボックスを非表示にするだけであることは明らかです)。そして、クリックされた他のコメントボックスを開くことに何らかの影響を与えています。この行を削除するvar t = setTimeout("BpActivityReply()", 325);
と、コメント ボックスが正常に開きますが、新しいステータスの更新時に事前に開きますが、これは発生しないはずです。誰が私が間違っているかを提案できますか
if (typeof jq == "function") {
jq("#content").ajaxComplete(function (evt, request, settings) {
var t = setTimeout("BpActivityReply()", 325);
});
jq("div.activity").click(function (event) {
var target = jq(event.target);
if (target.hasClass("acomment-reply") || target.parent().hasClass("acomment-reply")) {
BpActivityReply();
if (target.parent().hasClass("acomment-reply")) {
target = target.parent();
}
var id = target.attr("id");
ids = id.split("-");
var form = jq("#ac-form-" + ids[2]);
form.parents(".activity-replies").slideDown(200);
return false;
}
});
jq(document).keydown(function (e) {
e = e || window.event;
if (e.target) {
element = e.target;
} else {
if (e.srcElement) {
element = e.srcElement;
}
}
if (element.nodeType == 3) {
element = element.parentNode;
}
if (e.ctrlKey == true || e.altKey == true || e.metaKey == true) {
return;
}
var keyCode = (e.keyCode) ? e.keyCode : e.which;
if (keyCode == 27) {
if (element.tagName == "TEXTAREA") {
if (jq(element).hasClass("ac-input")) {
formContainer = jq(element).parent().parent().parents(".activity-replies");
}
if (formContainer.find("ul").length <= 0) {
formContainer.slideUp(200);
}
}
}
});
BpActivityReply();
}
function BpActivityReply() {
jQuery(".activity-replies").each(function () {
hasComments = jQuery(this).find("ul").first().children("li:visible");
if (hasComments.length <= 0) {
jQuery(this).css("display", "none");
} else {
jQuery(this).slideDown(200);
}
});