所以我有这个功能:
调用函数:
function tog_1(){
$('.upload').dequeue().stop(true, true).hide(400);
$('.post').dequeue().stop(true, true).show(400);
}
function tog_2(){
$('.upload').dequeue().stop(true, true).show(400);
$('.post').dequeue().stop(true, true).hide(400);
}
$(".status").on("click",".sts",function(){// status upload
tog_1();
$(".post").click(function(){
var message = $(".sts").val();
if ((jQuery.trim( message) ).length!=0)
{
$.post("load/post.php",{message : message, poster : <?php echo json_encode($_SESSION['id']); ?> , id : <?php echo json_encode($_SESSION['id']); ?> },
function(result){
$(".sts").css({"background":"rgba(255,255,255,0.5)","color":"rgba(0,0,0,0.3)","font-weight":"bold"});
$(".sts").animate({height:"20px"},"slow");
$(".sts").val("How do you feel?");
tog_2();
$('#history_t tr:first').fadeIn("slow").before(result);
});
}
});
});
关于这个html:
<table class="upload" width="100%" height="30px">
<tr>
<td width="33%" valign="middle" current="1" nr_crt="1" class="sts_td" align="center"><p>Status</p></td>
<td width="33%" valign="middle" nr_crt="2" class="img_td" align="center"><p>Upload image</p></td>
<td width="33%" valign="middle" nr_crt="3" class="link_td" align="center"><p>Share link</p></td>
</tr>
</table>
<textarea name="status_write" class="sts" id="sts1" >How do you feel?</textarea>
<textarea name="image_upload" class="img" id="sts2">Drag and drop image.</textarea>
<textarea name="share_link" class="link" id="sts3">Share link.</textarea>
每次按下textarea字段时$(".post").click()
都会建立一个队列,当我按下它后,它会将消息发送到数据库中我点击textarea字段的次数....就像{ {1}}建立一个队列,非常奇怪。
我怎么能阻止它?谢谢。
答案 0 :(得分:1)
此代码:
$(".status").on("click",".sts",function(){
每次点击匹配".sts"
的元素时,都会说&#34;运行此功能。这段代码:
$(".post").click(function(){
每次点击匹配".post"
的元素时,都会说&#34;运行此功能。基本上,".sts"
上的多次点击会产生:
".post"
。".post"
时再运行此其他功能。 (这与它的功能相同并不重要。)".post"
时运行此其他功能。".post"
时运行此其他功能。因此,当您点击".post"
时,会运行多个功能。
由于您通过AJAX加载新内容并绑定到新内容(我认为在这种情况下包含".post"
),因此您可能有几个选项。
您可以".post"
$('.post').off('click');
添加新的".post"
。这可以像在创建点击处理程序之前添加类似的东西一样简单:
".sts"
或者,根据您的其他逻辑的工作原理,您可以使用{{1}}的延迟点击处理程序,就像您已经用于{{1}}一样。从您的代码中不清楚为什么您需要重新绑定click处理程序而不是使用附加到公共父元素的延迟处理程序。