Javascript .each()绑定悬停事件并将变量传递给处理程序函数
我试图将一个悬停事件绑定到一些元素上,使用$.each遍历它们,其特点是我希望传递一个css类名作为悬停处理函数的参数,但似乎范围不是我所期望的。我已经试过了Javascript .each()绑定悬停事件并将变量传递给处理程序函数,javascript,jquery,css,each,jquery-hover,Javascript,Jquery,Css,Each,Jquery Hover,我试图将一个悬停事件绑定到一些元素上,使用$.each遍历它们,其特点是我希望传递一个css类名作为悬停处理函数的参数,但似乎范围不是我所期望的。我已经试过了 $(document).ready(function () { var $madewithLabels = $("#made-with .label"); // Binding $madewithLabels.each(function (index) { // get bootstrap css
$(document).ready(function () {
var $madewithLabels = $("#made-with .label");
// Binding
$madewithLabels.each(function (index) {
// get bootstrap css classname for the current element in the loop
var bsClass = getHoverClass($(this));
console.info("css class is: " + bsClass + " - " + typeof(bsClass));
$(this).hover(
function (bsClass) {
console.info(bsClass);
$(this).addClass(bsClass);
},
function (bsClass) {
console.info(bsClass);
$(this).removeClass(bsClass);
}
);
});
});
first console.info:getHover在事件绑定到文档就绪时获取正确的css类名字符串
第2/3rd console.info:当执行hover的处理函数时,bsClass是一个对象,我猜它是一个jQuery对象
我是这样解决的:
$(document).ready(function () {
var $madewithLabels = $("#made-with .label");
// Binding
$madewithLabels.each(function (index) {
$(this).hover(
function () {
$(this).addClass(getHoverClass($(this)));
},
function () {
$(this).removeClass(getHoverClass($(this)));
}
);
});
});
但我的问题是
使用$this是正确的解决方案吗
为什么当我将字符串变量传递给处理函数时,调用该函数时会得到一个对象?是因为某种类型的铸造吗?是因为关闭范围吗
感谢jQuery大师的回答 您在悬停回调中得到的是一个事件对象,如下所述: 汉德林 类型:函数事件事件对象 鼠标指针进入元素时要执行的函数 因此,在您的第一个示例更改中:
function (bsClass) {
为此:
function () {
因此,您继续使用以前计算过的原始bsClass。我认为您的函数将获得两个传递给它的参数。所以它应该看起来像这个函数索引,item。使用项目1绑定悬停事件。我想应该是这样的:$item.hover。。。