.each()绑定悬停事件并传递一个变量给处理函数
.each() bind hover events and pass a variable to handler functions
我试图将悬停事件绑定到一些元素,用$遍历它们。每个,我想传递一个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);
}
);
});
});
- 第一个console.info: getHover()获得正确的css类名(字符串)当事件被绑定(在文档就绪)
- 第二/第三控制台。info:当悬停的处理函数执行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大师的回答!
你在悬停回调中得到的是一个Event对象,正如文档中提到的:
handlerIn
类型:Function(Event eventObject)
当鼠标指针进入元素时执行的函数。
那么在你的第一个例子中改变:
function (bsClass) {
:
function () {
所以你继续使用你之前计算的原始bsClass
相关文章:
- 导航到特定事件的另一个变量页面
- 我可以在Javascript/jQuery中使用一个变量作为键吗
- 使用mongodb更新中的一个变量
- 将节点数据分配给另一个变量jstree
- Javascript:在激发函数后返回一个变量以供使用
- 替换另一个变量对象中的变量值
- 什么'它的意思是当一个变量位于括号外时
- 可以't将sessionStorage设置为Javascript中的一个变量
- 在Flickr API的标签参数中传递一个变量
- 从Jquery函数中获取一个变量
- 为两个ID设置一个变量的正确语法
- 如何将变量值附加到另一个变量
- 通过加载函数发送一个变量
- 如何将一个变量从一个控制器传递到合金中的另一个控制器
- 如何在Jquery函数中为自动完成文本区域指定一个变量作为Id
- Javascript未在其中一个变量上输出0
- 保留“;这个“;在一个变量中;这个“;使用此变量
- 是否可以在另一个变量中使用未声明的变量
- JS/ANGULAR使用一个变量's值作为另一个对象的键
- 如何每秒从一个变量中提取一定次数的javascript/html