“已完成”替换为“已完成”; } } }); }); $([id^='toggle'])。单击(函数(事件){ event.preventDefault(); $(“div[id='replypost'+$(this.attr('id').replace('toggle','')+'])toggle(); }); var-likecounter=0; var dislikecounter=0; $([a[id^='like_']])。单击(函数(事件){ event.preventDefault(); var值=$(this.attr(“id”).replace('like_u',''); $.ajax({ url:“./like.php?id=“+value+”&sname=“, 成功:函数(html){ if(html&&likecounter==0&&dislikecounter==0){ $(“#commentpanel_389;”+value).append(“您喜欢这篇文章”); likecounter=1; }否则{ $(“div#loadmorecomments”)。替换为(“div#done”); } } }); }); $([a[id^='dislike_']])。单击(函数(事件){ event.preventDefault(); var值=$(this.attr(“id”).replace('dishate_uu',''); $.ajax({ url:“./不喜欢.php?id=“+value+”&sname=“, 成功:函数(html){ if(html&&likecounter==0&&dislikecounter==0){ $(“#commentpanel”+value).append(“你讨厌这篇文章”); dislikecounter=1; }否则{ $(“div#loadmorecomments”)。替换为(“div#done”); } } }); });
我想知道为什么当我点击锚定标签时,它只是刷新页面,而没有调用javascript函数 注意:原始页面具有与发布注释和调用javascript函数完全相同的格式,它工作得非常好。唯一不工作的时间是从调用的loadmorecomments.php文件加载注释时“已完成”替换为“已完成”; } } }); }); $([id^='toggle'])。单击(函数(事件){ event.preventDefault(); $(“div[id='replypost'+$(this.attr('id').replace('toggle','')+'])toggle(); }); var-likecounter=0; var dislikecounter=0; $([a[id^='like_']])。单击(函数(事件){ event.preventDefault(); var值=$(this.attr(“id”).replace('like_u',''); $.ajax({ url:“./like.php?id=“+value+”&sname=“, 成功:函数(html){ if(html&&likecounter==0&&dislikecounter==0){ $(“#commentpanel_389;”+value).append(“您喜欢这篇文章”); likecounter=1; }否则{ $(“div#loadmorecomments”)。替换为(“div#done”); } } }); }); $([a[id^='dislike_']])。单击(函数(事件){ event.preventDefault(); var值=$(this.attr(“id”).replace('dishate_uu',''); $.ajax({ url:“./不喜欢.php?id=“+value+”&sname=“, 成功:函数(html){ if(html&&likecounter==0&&dislikecounter==0){ $(“#commentpanel”+value).append(“你讨厌这篇文章”); dislikecounter=1; }否则{ $(“div#loadmorecomments”)。替换为(“div#done”); } } }); });,php,javascript,html,ajax,mysqli,Php,Javascript,Html,Ajax,Mysqli,我想知道为什么当我点击锚定标签时,它只是刷新页面,而没有调用javascript函数 注意:原始页面具有与发布注释和调用javascript函数完全相同的格式,它工作得非常好。唯一不工作的时间是从调用的loadmorecomments.php文件加载注释时 我知道这是一个棘手的问题,如果我能进一步澄清,请让我知道谢谢。你可以尝试在锚定标记的href=“”属性中添加,该属性具有切换ID。例如最近的帖子已删除 新答案。我知道它不会那么干净,但请尝试在loadmorecomments.php中添加脚本
我知道这是一个棘手的问题,如果我能进一步澄清,请让我知道谢谢。你可以尝试在锚定标记的
href=“”
属性中添加
,该属性具有切换ID。例如
最近的帖子已删除
新答案。我知道它不会那么干净,但请尝试在
loadmorecomments.php
中添加
脚本,以便在添加新注释时加载它。很难从您发布的代码片段中分辨出来,但我想您是说第二个和第三个代码片段是通过ajax加载的。如果是这样,我会作为js,您的问题是什么(第三段)在通过ajax加载时不会执行。最简单的解决方案是将此javascript包含在主js文件中,并对其进行修改,以便它能够处理尚未加载的dom元素。您似乎正在使用JQuery,因此如果使用JQuery 1.7+,您可以获得所需的所有详细信息。如果没有,请查看哪一个更容易(但iOS Safari很棘手).答案来自@reikyushin,我应该使用live()函数来处理点击。非常感谢所有试图帮助回答这个问题的人!!编辑:
我意识到live()
函数已被弃用,并且将在1.9版上删除,因此为了大家的缘故,我编辑了我的答案。您应该改用on()
函数。谢谢
我会尽力解释清楚的 正如我的评论所引用的
“难道你不应该用
live()
而不是click()
?见。。现在和将来为与当前选择器匹配的所有元素附加一个事件处理程序。
现在,问题是。。有什么区别
使用click()
会将事件处理程序添加到您在jQuery中指定的选择器的所有目标,它解释了live()
前面的API描述中的“现在”
例如:$([id^='toggle'])
在调用该函数时将仅应用于所有DOM对象
因此,插入DOM的所有新对象都不会有“事件处理程序”
但与live()
不同的是,所有与原始选择器匹配的对象仍然会被您添加的事件绑定,这解释了
$("#loadmorecomments").click(function(){
$('div#loadmorecomments').show();
.ajax({
url: "loadmorecomments.php?lastComment=" + $(".post:last").attr("id") + "&sname=<?php echo $link ?>",
success: function(html){
if(html){
$("#postspace").append(html);
$("div#loadmorecomments").hide();
else{
("div#loadmorecomments").replaceWith("div#done");
}
});
});
if($stmt = mysqli_prepare($mysqli, "SELECT post.text,post.username,post.id,post.likes,post.dislikes,post.image,users.avatar FROM post LEFT JOIN users ON post.username = users.username WHERE post.school='$sname' AND post.id < $lastcomment ORDER BY post.id DESC LIMIT 0,10")){
mysqli_stmt_execute($stmt);
mysqli_stmt_execute($stmt);
mysqli_stmt_bind_result($stmt,$comments,$user, $id,$likes,$dislikes,$image,$avatar);
$counter = 0;
while(mysqli_stmt_fetch($stmt)){
/////////////////Get Image///////////////////
switch($user){
case "Anonymous":
$img = "design/anonymous.png";
break;
case $user != "Anonymous" && !empty($avatar):
$img = $avatar;
break;
case $user != "Anonymous" && empty($avatar):
$img = "logo.png";
break;
}
if(!empty($image) || $image != "images/"){
$comimage = $image;
}else{
$comimage = "";
}
echo "<div class = 'post' id = '$id'>";
echo "<a href = './visitpage.php?userpage='$user'>$user<br /><img src='$img'/></a>";
if(!empty($comimage)){
echo "<img src='$comimage' class='comimage'></img>
<h3>$comments</h3>
";
}else{
echo "<p>$comments</p>";
}
echo "<div style='border: 2px solid #000; height: 40px; margin-right: 20px; margin-left:90px; background: #F1F2F6'class='commentpanel' id='commentpanel_$id'>";
if(in_array($id, $likedcomments)){
echo "<img src='design/liked.png' class='like' /><h4 class='liketext' id='liketext_$id'>You and $likes</h4>";
}else{
echo " <a href='' id='like_$id'><img src='design/like.png' class='like' /></a><h4 class='liketext' id='liketext_$id'>$likes</h4>";
}
if(in_array($id, $dislikedcomments)){
echo "<img src='design/disliked.png' class='like' /><h4 class='liketext' id='liketext_$id'>You + $dislikes</h4>";
}else{
echo " <a href='' id='dislike_$id'><img src='design/dislike.png' class='like' /></a><h4 class='liketext' id='liketext_$id'>$dislikes</h4>";
}
$link = urlencode($sname);
echo "
<a href= '' id ='toggle_$id'><img src='design/reply.png' class='like'/><h4 class='liketext'>Send Message</h4></a>
<a href= './quote.php?text=$comments&school=$link' ><img src='design/quote.png' class='like'/><h4 class='liketext'>Quote Post</h4></a>
</div>
<div class = 'replypost' id='replypost_$id'>
<form action='' method='POST'>
<input type= 'hidden' name='user' id='user' value='$user' />
<input type= 'hidden' name='comment' id='comment' value='$comments' />
<input type='textarea' name='reply' id= 'reply' class='replycomment' />
<input type= 'submit' id='submit' name='submit' value=' Reply ' class='replybutton' />
</form>
</div>
<br/><br/><br/>
</div>";
$counter++;
}
mysqli_stmt_close($stmt);
}
mysqli_close($mysqli);
}
<script><!---- Load More Comments !---->
$("#loadmorecomments").click(function(){
$('div#loadmorecomments').show();
$.ajax({
url: "loadmorecomments.php?lastComment=" + $(".post:last").attr("id") + "&sname=<?php echo $link ?>",
success: function(html){
if(html){
$("#postspace").append(html);
$("div#loadmorecomments").hide();
}else{
$("div#loadmorecomments").replaceWith("div#done");
}
}
});
});
$("a[id ^= 'toggle']").click(function(event){
event.preventDefault();
$("div [id='replypost_"+$(this).attr('id').replace('toggle_','')+"']").toggle();
});
var likecounter = 0;
var dislikecounter = 0;
$("a[id ^= 'like_']").click(function(event){
event.preventDefault();
var value = $(this).attr("id").replace('like_','');
$.ajax({
url: "./like.php?id="+value+"&sname=<?php echo $link ?>",
success: function(html){
if(html && likecounter == 0 && dislikecounter == 0 ){
$("#commentpanel_"+value).append("<br/><br/><br /><br /><h4>You Like This Post</h4>");
likecounter = 1;
}else{
$("div#loadmorecomments").replaceWith("div#done");
}
}
});
});
$("a[id ^= 'dislike_']").click(function(event){
event.preventDefault();
var value = $(this).attr("id").replace('dislike_','');
$.ajax({
url: "./dislike.php?id="+value+"&sname=<?php echo $link ?>",
success: function(html){
if(html && likecounter == 0 && dislikecounter == 0 ){
$("#commentpanel_"+value).append("<br/><br/><br /><h4>You Hate This Post</h4>");
dislikecounter = 1;
}else{
$("div#loadmorecomments").replaceWith("div#done");
}
}
});
});
</script>
$("a[id^='toggle']").click(function(event){
//$("a[id^='toggle']).live('click',function(event){
//EDIT: this is deprecated. use on() instead, see below:
$(document.body).on('click', 'a[id^="toggle"]', function() {