我想为页面中 obj
数组中的所有链接重新着色,如果它们与 procura
中的数字匹配。
所以,obj = [6849,6850]
procura
定义如下:
function getLastNumberOfString(str){
var allNumbers = str.replace(/[^0-9]/g, ' ').trim().split(/\s+/);
return parseInt(allNumbers[allNumbers.length - 1], 10);
}
jQuery(function() {
jQuery('a.mod-articles-category-title').each(function () {
var $link=jQuery(this);
var href=$link.attr('href');
var procura = getLastNumberOfString(href)
jQuery.each(obj,function(_,test) {
if(test.indexOf(procura)!=-1) { // only works on strings
jQuery(this).css({'color':'#45AAA2'});
jQuery(this).delay(1000);
jQuery(this).animate({
color:"#CCCCCC"
},3000);
}
});
});
});
返回错误:Uncaught TypeError: Cannot use 'in' operator to search for 'color' in undefined
我认为这是因为 this
没有正确定义,但是如何解决呢?
最佳答案
在嵌套的each()
方法中,this
引用数组的每个元素。相反,您希望它引用由最外层的 each()
返回的 jQuery 集合中的每个 anchor 。
将当前 anchor 存储在一个变量中,以便在嵌套的 each()
方法中使用。您已经创建了名为 $link
的变量:
$(function() {
$('a.mod-articles-category-title').each(function() {
var $link = $(this);
var href = $link.attr('href');
var procura = getLastNumberOfString(href);
$.each(obj, function(_, test) {
if (test.indexOf(procura) != -1) { // only works on strings
$link.css({
'color': '#45AAA2'
});
$linkdelay(1000);
$link.animate({
color: "#CCCCCC"
}, 3000);
}
});
});
});
关于javascript - 如果 URL 包含在数组中,则重新着色页面中的链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35091603/