Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将jquery转变为可包含、可调用的函数_Javascript_Jquery_Html - Fatal编程技术网

Javascript 将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

我太沮丧了!作为一名ok PHP开发人员,我无法理解jquery问题的简单性

我最近将HTML jquery include移到HTML正文的末尾,而不是头部,以提高google pagespeed得分

这破坏了一些用于简单评论投票的jquery。这篇文章写得很糟糕,因为每一条评论都会重复

<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,很高兴我能帮忙。