我正在尝试在成功函数中删除此元素,但它没有这样做!!
jQuery文件:
$(function () {
//More Button
$('.more').live("click", function () {
var ID = $(this).attr("id");
if (ID) {
$("#more" + ID).html('<img src="moreajax.gif" />');
$.ajax({
type: "POST",
url: "ajax_more.php",
data: "lastmsg=" + ID,
cache: false,
success: function (html) {
$("ul.statuses").append(html);
// my problem is here
$("#more" + ID).remove();
}
});
}
else {
$(".morebox").html('The End');
}
return false;
});
});
这是html文件: 这是单击以检索更多结果的按钮!
echo'<div id="more'. $dateTime.'" class="morebox">
<a href="#" class="more" id="'.$dateTime.'">more</a>';
答案 0 :(得分:4)
如果您的id
中有空格,那就是您的问题。该空格在id
属性中有效,但它会混淆您在此处使用的CSS选择器(因为它未正确转义):
$("#more" + ID).remove();
例如,使用您在另一个答案的评论中引用的ID,最终将成为:
$("#more2010-09-20 12:53:43").remove();
...这是一个无效的选择器(我很确定;至少,它不是你正在寻找的选择器)。
最简单的方法可能是确保$dateTime
变量的值中没有任何空格。为了更好的衡量,我会避免冒号(:
)以及,但我可能只是偏执狂(不,我不是,见下文)。
例如,您可以更改输出这些内容的PHP代码以使用str_replace
并看起来像这样(我不是PHP人员,如果有轻微的语法问题,请道歉,但是你得到了要点):
$baseId = str_replace(':', '', str_replace(' ', '_', $dateTime));
echo'<div id="more'. $baseId.'" class="morebox"><a href="#" class="more" id="'.$baseId.'">more</a>';
有关CSS选择器的详细信息:除非您转义某些字符,否则有许多有效的id
值无法在CSS选择器中使用。几乎任何内容在id
中都有效,但ID you use with a CSS selector必须使用其中的一部分或正确转义:
在CSS中,标识符(包括选择器中的元素名称,类和ID)只能包含字符[a-zA-Z0-9]和ISO 10646字符U + 00A1和更高,加上连字符( - )和下划线(_);它们不能以数字开头,也不能以数字后跟连字符开头。标识符还可以包含转义字符和任何ISO 10646字符作为数字代码(请参阅下一项)。例如,标识符“B&amp; W?”可以写成“B \&amp; W \?”或“B \ 26 W \ 3F”。
答案 1 :(得分:0)
我认为id不会产生你期望的结果,试着看看结果如何:
alert("#more" + ID);
并确保它与您的代码相同:
<a href="#" class="more" id="'.$dateTime.'">more</a>
答案 2 :(得分:-1)
我认为
$("#more" + ID).remove();
应该是
$("#more" + ID).html('');
否则事情就无法正常运作。