好的,所以这就是交易:我正在尝试创建一个用户脚本,以便在Greasemonkey / Chrome /用于管理这些内容的任何其他内容中使用。我想做的部分工作是为我为这个特定脚本设计的图标创建标签。我至少对如何在Jquery中实现这一点有了一个大概的了解。我将使用的代码是:
$('li.tab.iconic').each(function (i) {
var spanName = $('this').attr(id);
var toRemove = '_button';
var spanNameCrop = spanName.replace(toRemove,'');
$('this').append('<span class="tooltip_label">'+spanNameCrop+'</span>');
});
基本上,我想获取每个id
的{{1}}属性,从中修剪短语“_button”,然后将剩余的文本插入到作为标签的范围中。我的问题是我搜索了高低,但没有找到关于如何在javascript中执行这样的循环的明确说明。它甚至可能吗?
或者,我正在构建的网站包括Jquery库。有没有办法告诉我的脚本在网站加载jquery后加载,以便jquery脚本可以工作?
编辑:感谢Avladov的工作。这是最后的剧本。
li
答案 0 :(得分:2)
你不想使用'this'
想要使用this
,如果id不是带有值的变量字符串,你希望它是一个字符串:
$('li.tab.iconic').each(function (i) {
var spanName = $(this).attr('id');
var toRemove = '_button';
var spanNameCrop = spanName.replace(toRemove,'');
$('this').append('<span class="tooltip_label">'+spanNameCrop+'</span>');
});
如果网站不使用jQuery,你可以使用jQuery包含jQuery:
if(!(window.jQuery && window.jQuery.fn.jquery == '1.8.1')) {var s = document.createElement('script');s.setAttribute('src', 'http://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js');s.setAttribute('type', 'text/javascript');document.getElementsByTagName('head')[0].appendChild(s);}
答案 1 :(得分:1)
如果您的Greasemonkey脚本适用于使用jQuery的站点,那么您可以在脚本中使用它。使用此代码:
var jQuery, $ = null;
function addJQuery(callback) {
var p = null;
if(window.opera || window.navigator.vendor.match(/Google/)) {
var div = document.createElement("div");
div.setAttribute("onclick", "return window;");
p = div.onclick();
}
else {
p = unsafeWindow;
}
jQuery = $ = p.jQuery.noConflict();
callback();
}
回调是 Greasemonkey脚本中的一个功能。完成此操作后,您可以将 jQuery 与 jQuery 和 $ 一起使用,就像它是一个普通的网页JavaScript一样。
这种方法的好处是它不仅适用于Firefox,也适用于Chrome和Opera。它也不会加载新的jQuery脚本,而是重用网页中的那个。
示例:
var myFunction = function() {
// Your code here
};
addJQuery(myFunction);
编辑:
有一种方法可以在脚本元数据块中使用 @include 和 @match 来限制脚本。
您可以在GM Wiki上阅读更多相关信息 - http://wiki.greasespot.net/Metadata_Block
答案 2 :(得分:0)
在document.ready function
中添加jquery脚本$(document).ready(function(){
$('li.tab.iconic').each(function (i) {
var spanName = $('this').attr('id');
var toRemove = '_button';
var spanNameCrop = name.replace(toRemove,'');
$(this).append('<span class="tooltip_label">'+spanNameCrop+'</span>');
});
})
现在,当抓取页面上的所有资源时,代码将会执行
您可以在这里阅读更多内容: http://api.jquery.com/ready/