-1

我认为我永远不会了解变量的一件事是以下内容。

我有一个像这样的悬停功能:

var $thisId = $(this).attr('id');
function bindHover() {
    $("#wrapper img").hover( function() {
        console.log($thisId);
    });
}

console.log 给了我undefined. 当我在函数之间声明变量时,它起作用了。现在的问题是,如果我想$(this).attr('id')在我的 js 中使用所有不同的功能。我能做什么,我不必在每个函数中编写一个新变量?

4

2 回答 2

2
var $thisId = $(this).attr('id');

该行将运行一次$thisId将被分配一个值,然后代码将继续运行。

因此,当您的bindHover函数被调用并分配处理程序时,它将使用分配时的任何值$thisId

您需要id从处理程序内部获取,这this就是您想要的元素。

function bindHover() {
    $("#wrapper img").hover( function() {
        //console.log($(this).attr('id'));
        console.log(this.id); // it's shorter :-)
    });
}
于 2013-05-22T20:24:06.573 回答
1
var $thisId; // create the var in global space
function bindHover() {
  $("#wrapper img").hover( function() {
    $thisId = $(this).attr('id'); // set global var in local space
    console.log($thisId); // global var displays local $(this) id
  });
  console.log($thisId); // global var retains locally defined value until set again
}
于 2013-05-22T20:26:39.713 回答