使用jQuery更改对象上的类不允许我使用新类的onClick事件 - php

我允许用户投票一个项目。当他们单击向上箭头时,我让jQuery更改了箭头的类,以使其变为绿色。现在,如果用户再次单击该箭头,则我想创建一个事件以将该箭头更改回其原始类,因此他们正在撤消其投票(例如stackoverflow投票:单击一次进行投票,再次单击以撤消)。无论如何,这是我的代码。

这些是页面加载时在php中生成的箭头类。

  <a href="javascript:void(0)" id = "' . $row['item_id'] . 'up"

        '; if ($row['upVote'] > 0) { echo '
            class = "used_upArrow"
           ';} else {echo '
               class = "new_upArrow"
               ';} echo '
                rowid="' . $row['item_id'] . '">
     </a>

这是我的jQuery在upvote上更改类的方法。所有这一切都完美。

//upArrow
 $('.new_upArrow').click(function(){
   var row = $(this).attr('rowid');
    $.ajax({
    type: "GET",
    url: "upVote.php?id="+row,
    cache: false,
    async: false,
    success: function() {
        $('.'+row).html(parseInt($('.'+row).html()) + 1);
        document.getElementById(row+'up').className = "used_upArrow";
        },
    error: function(result){
        alert('Voting error, please try again.');
        }
     });
});

这是应该发生撤消的地方。因此,new_upArrow现在应为used_upArrow,并且该脚本应在单击时触发。

 $('.used_upArrow').click(function(){
   var row = $(this).attr('rowid');
    $.ajax({
    type: "GET",
    url: "downVote.php?id="+row,
    cache: false,
    async: false,
    success: function(result) {
        $('.'+row).html(parseInt($('.'+row).html()) - 1);
        document.getElementById(row+'up').className = "new_upArrow";
        },
    error: function(result){
        alert('Voting error, please try again.');
        }
    });
});

检查萤火虫时,该类实际上是从new_upArrow更改为used_upArrow,但是单击该类时它仍会继续更新,就好像该类没有更改一样。有什么想法吗?先感谢您。

参考方案

使用jQuery live event binding,例如

$('.new_upArrow').live('click', function(){

$('.used_upArrow').live('click', function(){

您的事件绑定不起作用的原因是因为普通绑定(例如element.click())在执行时仅处理一次。

实时活页夹使用事件委托,该委托将现在和将来将处理程序附加到匹配的元素。

PHP:将数组值加在一起 - php

我相信这比标题听起来要难一些,但我可能完全错了。我有一个像这样的数组:[["londrina",15],["cascavel",34],["londrina",23],['tiradentes',34],['tiradentes',21]] 我希望能够采用通用…

PHP JQuery复选框 - php

我有以下片段。 var myData = { video: $("input[name='video[]']:checked").serialize(), sinopse: $("#sinopse").val(), dia: $("#dia").val(), quem: $(&#…

PHP strtotime困境 - php

有人可以解释为什么这在我的服务器上输出为true吗?date_default_timezone_set('Europe/Bucharest'); var_dump( strtotime('29.03.2015 03:00', time()) === strtotime('29.03.2015 04:00�…

PHP-全局变量的性能和内存问题 - php

假设情况:我在php中运行一个复杂的站点,并且我使用了很多全局变量。我可以将变量存储在现有的全局范围内,例如$_REQUEST['userInfo'],$_REQUEST['foo']和$_REQUEST['bar']等,然后将许多不同的内容放入请求范围内(这将是适当的用法,因为这些数据指的是要求自…

php-casperjs获取内部文本 - php

我正在为casperjs使用php包装器-https://github.com/alwex/php-casperjs我正在网上自动化一些重复的工作,我需要访问一个项目的innerText,但是我尚不清楚如何从casperjs浏览器访问dom。我认为在js中我会var arr = document.querySelector('label.input…