首先,这是一个关键词脚本。我没有从开发角度访问该网站。
我将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('\'',''') + "' class='blacklist' value='✗' /><br/><input type='button' style='background-color:black;border:none;cursor:pointer;margin-top:4px;color:green;font-weight:bold;' title='" + imgAlt.replace('\'',''') + "' class='whitelist' value='✓' /></span>");
}
}));
}
答案 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;
} );