我快速质疑jquery变量“this”的值。
我拿了下面显示的一些示例代码......
function blockHighlite()
{
// alert ('block ' + $gCurrentClass + ' index ' + $gIndex);
$(this).data('bgcolor', $(this).css('border-color'));
$(this).css('border-color','rgba(255,128,0,.5)');
$(this).css('border-color', $(this).data('bgcolor'));
};
这段代码可以很好地高亮显示元素边框,但是当我将代码转移到指向这样的特定元素时,使用全局变量来表示所选元素就会失败。 我不理解“这个”变量的用法吗?变量$ gCurrentClass和$ gIndex只是我所选元素的类和索引。
function blockHighlite()
{
alert ('block ' + $gCurrentClass + ' index ' + $gIndex);
$gCurrentClass.eq[$gIndex].data('bgcolor', $gCurrentClass.eq[$gIndex].css('border-color'));
$gCurrentClass.eq[$gIndex].css('border-color','rgba(255,128,0,.5)');
$gCurrentclass.eq[$gIndex].css('border-color', $gCurrentClass.eq[$gIndex].data('bgcolor'));
};
任何帮助将不胜感激。
答案 0 :(得分:1)
假设$gCurrentClass
包含表示类名的字符串,则需要将其作为查询选择器传递给jQuery构造函数($
)。请尝试以下方法:
function blockHighlite()
{
alert ('block ' + $gCurrentClass + ' index ' + $gIndex);
$('.'+$gCurrentClass).eq($gIndex).data('bgcolor', $('.'+$gCurrentClass).eq($gIndex).css('border-color'));
$('.'+$gCurrentClass).eq($gIndex).css('border-color','rgba(255,128,0,.5)');
$('.'+$gCurrentclass).eq($gIndex).css('border-color', $('.'+$gCurrentClass).eq($gIndex).data('bgcolor'));
};