Javascript 将jquery转变为可包含、可调用的函数
我太沮丧了!作为一名ok PHP开发人员,我无法理解jquery问题的简单性 我最近将HTML jquery include移到HTML正文的末尾,而不是头部,以提高google pagespeed得分 这破坏了一些用于简单评论投票的jquery。这篇文章写得很糟糕,因为每一条评论都会重复Javascript 将jquery转变为可包含、可调用的函数,javascript,jquery,html,Javascript,Jquery,Html,我太沮丧了!作为一名ok PHP开发人员,我无法理解jquery问题的简单性 我最近将HTML jquery include移到HTML正文的末尾,而不是头部,以提高google pagespeed得分 这破坏了一些用于简单评论投票的jquery。这篇文章写得很糟糕,因为每一条评论都会重复 <div id="voterow-19907" class="commentfooter">UP</a> | <a id="comment-vote-down-19907" hr
<div id="voterow-19907" class="commentfooter">UP</a> | <a id="comment-vote-down-19907" href="#" rel="nofollow">DOWN</a></div>
<script>
$("#comment-vote-up-19907").click(function() {
$.ajax({
type: "GET",
url: "/ajax.php",
data: "a=rv&v=19907&d=up",
success: function(data){
$("#voterow-19907").text("Thank you for your vote")
}
});
return false;
});
$("#comment-vote-down-19907").click(function() {
$.ajax({
type: "GET",
url: "/ajax.php",
data: "a=rv&v=19907&d=down",
success: function(data){
$("#voterow-19907").text("Thank you for your vote")
}
});
return false;
});
</script>
UP |
$(“#comment-vote-up-19907”)。单击(函数(){
$.ajax({
键入:“获取”,
url:“/ajax.php”,
数据:“a=rv&v=19907&d=up”,
成功:功能(数据){
$(“#voterow-19907”)。文本(“感谢您的投票”)
}
});
返回false;
});
$(“#comment-vote-down-19907”)。单击(函数(){
$.ajax({
键入:“获取”,
url:“/ajax.php”,
数据:“a=rv&v=19907&d=down”,
成功:功能(数据){
$(“#voterow-19907”)。文本(“感谢您的投票”)
}
});
返回false;
});
由于将jquery include移动到页面底部,这自然不起作用
我要做的是将上面的代码转换成一个小函数,我可以在jquery include之后包含它,然后使用jquery DATA-attribute将ID和投票方向从htmlahrefs传递给该函数
任何帮助都将不胜感激。我的头发快用完了 我认为,重复的代码会比放置JQuery文件更伤页面 您可以使用更通用的事件侦听器来解决此问题。删除代码中的所有监听器(所有监听器),并在Jquery include之后追加下面的代码
$('[id^=comment-vote]').click(function() {
var elementId = $(this).attr('id');
var elementIdParts = elementId.split("-");
var voteType = elementIdParts[2];
var id = elementIdParts[3];
$.ajax({
type: "GET",
url: "/ajax.php",
data: "a=rv&v="+id+"&d="+voteType,
success: function(data){
$("#voterow-"+id).text("Thank you for your vote")
}
});
return false;
});
$(“[id^=comment vote]”
选择id以“comment vote”开头的所有元素。如果用户单击其中一个元素,事件处理程序将获取元素的id,并将其拆分为“comment”、“vote”、“up”、“19900”等部分“.2部分是voteType,3部分是行的ID。我们可以在生成/操作AJAX请求时使用这些变量
我没有尝试这些代码,但其背后的想法对您是有益的。我认为,重复的代码会比放置JQuery文件更伤害您的页面 您可以使用更通用的事件侦听器来解决此问题。删除代码中的所有监听器(所有监听器),并在Jquery include之后追加下面的代码
$('[id^=comment-vote]').click(function() {
var elementId = $(this).attr('id');
var elementIdParts = elementId.split("-");
var voteType = elementIdParts[2];
var id = elementIdParts[3];
$.ajax({
type: "GET",
url: "/ajax.php",
data: "a=rv&v="+id+"&d="+voteType,
success: function(data){
$("#voterow-"+id).text("Thank you for your vote")
}
});
return false;
});
$(“[id^=comment vote]”
选择id以“comment vote”开头的所有元素。如果用户单击其中一个元素,事件处理程序将获取元素的id,并将其拆分为“comment”、“vote”、“up”、“19900”等部分“.2部分是voteType,3部分是行的ID。我们可以在生成/操作AJAX请求时使用这些变量
我没有尝试过代码,但其背后的想法对您有益。要真正给出一个很好的工作答案,我需要查看您的示例页面/html的确切结构,但以下是我为您准备的内容 在jQuery之后包含的脚本文件中,可以包含类似于以下代码的内容,假设您的html如下所示:
<div id="voterow-1" class="voterow">
<p class="voteresult"></p>
<a class="upvote" href="#" rel="nofollow">UP</a>
<a class="downvote" href="#" rel="nofollow">DOWN</a>
</div>
<div id="voterow-2" class="voterow">
<p class="voteresult"></p>
<a class="upvote" href="#" rel="nofollow">UP</a>
<a class="downvote" href="#" rel="nofollow">DOWN</a>
</div>
这里是一个演示:要真正给出一个很好的工作答案,我需要看看你的示例页面/html的确切结构,但这里是我为你准备的 在jQuery之后包含的脚本文件中,可以包含类似于以下代码的内容,假设您的html如下所示:
<div id="voterow-1" class="voterow">
<p class="voteresult"></p>
<a class="upvote" href="#" rel="nofollow">UP</a>
<a class="downvote" href="#" rel="nofollow">DOWN</a>
</div>
<div id="voterow-2" class="voterow">
<p class="voteresult"></p>
<a class="upvote" href="#" rel="nofollow">UP</a>
<a class="downvote" href="#" rel="nofollow">DOWN</a>
</div>
这是一个演示:这是一个非常好的解决方案,多亏了您的评论,我才真正理解它,谢谢!然而,遗憾的是,它不起作用。它仍然没有很好的约束力。我刚刚注意到开场白中有一句话没有匹配“。我更正了报价错误,很高兴听到您解决了问题。这是一个非常好的解决方案,感谢您的评论,我真的理解了它,谢谢!然而,遗憾的是,它不起作用。它仍然没有很好的约束力。我刚刚注意到开场白中有一句话没有匹配“。我更正了报价错误,很高兴听到你解决了问题。谢谢你,罗伯特。第一条评论实际上以一种非常优雅的方式回答了这个问题,但是你的例子确实帮助我进一步理解了这个问题jquery@Jon,很高兴我能帮忙。谢谢你,罗伯特。第一条评论实际上以一种非常优雅的方式回答了这个问题,但是你的例子确实帮助我进一步理解了这个问题jquery@Jon,很高兴我能帮忙。