删除一个类,然后重用它

时间:2014-11-25 14:42:07

标签: jquery greasemonkey

首先,这是一个关键词脚本。我没有从开发角度访问该网站。

我将2个按钮附加到<p>标记中。我专注于黑名单方面。 刷新功能最初运行以设置按钮。当它运行时,页面上没有任何黑名单类。单击黑名单按钮后,.click第一次触发。在.click结束时,我再次运行刷新。在第二次单击尝试时,.click不会触发。我想知道.mlick是否在.remove运行后无线连接。然后未来的黑名单按钮没有与他们相关的.clicks如何。

以前,我不需要刷新方法中的.remove方法,后续点击工作正常。

    $('.blacklist').click (function(e)
   {       
       e.preventDefault();       
       var data = $(this).attr('title');      
       var blacklist = gmGet("blacklist");
       var blacklistArray = blacklist.split('|');

       blacklistArray.push(data);

       var newlist = blacklistArray.join('|');
       setTimeout(GM_setValue("blacklist",newlist),0);  

       Refresh();
       return false;
   });

function Refresh()
   {
     var Blist = GM_getValue("blacklist", "");
     var blacklistArray = Blist.split('|');
     var Wlist = GM_getValue("whitelist", "");
     var whitelistArray = Wlist.split('|');

      $('.blacklist').remove();
      $('.whitelist').remove();

      $(jQp.each(function() 
       {       
          var temp = $(this);
          var imgAlt = temp.find('img').attr('alt');

          //if blacklist array contains imgAlt then jQp.hide!
          if (imgAlt != undefined && imgAlt.substr(0, 6) != "Lineup" && imgAlt != "")
             {
               if (jQuery.inArray(imgAlt,blacklistArray) >= 0) temp.hide();
             }

          if (imgAlt != undefined && imgAlt.substr(0, 6) != "Lineup" && (jQuery.inArray(imgAlt,whitelistArray) < 0)) 
             {
                temp.append("<span style='vertical-align: top;display:inline-block;text-align:left;' class='mymenu'><input type='button' style='background-color:black;border:none;cursor:pointer;color:red;font-weight:bold;' title='" + imgAlt.replace('\'','&#39;') + "' class='blacklist' value='&#x2717;' /><br/><input type='button' style='background-color:black;border:none;cursor:pointer;margin-top:4px;color:green;font-weight:bold;' title='" + imgAlt.replace('\'','&#39;') + "' class='whitelist' value='&#x2713;' /></span>");
             } 
       }));
   }

1 个答案:

答案 0 :(得分:0)

该代码不会删除任何类;它删除具有类blacklist或类whitelist的节点。这也删除了那些节点拥有的任何click处理程序。

要使用其中一个类获取所有当前和未来节点,请使用jQuery's .on()Doc(需要jQuery 1.7或更高版本)。

点击功能变为:

$(document.body).on ("click", ".blacklist", function (e) {       
    e.preventDefault ();       
    var data = $(this).attr ('title');

    //### `gmGet` LOOKS LIKE A POSSIBLE ERROR.
    var blacklist = gmGet ("blacklist");
    var blacklistArray = blacklist.split ('|');

    blacklistArray.push (data);

    var newlist = blacklistArray.join ('|');
    setTimeout (GM_setValue ("blacklist",newlist),0);  

    Refresh ();
    return false;
} );