[英].each() bind hover events and pass a variable to handler functions
我正在嘗試將懸停事件綁定到某些元素,並通過$ .each遍歷它們,其特殊之處是我想將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);
}
);
});
});
我已經這樣解決了:
$(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對象,如docs所述 :
handlerIn
類型:函數(Event eventObject)
當鼠標指針進入元素時執行的功能。
因此,在您的第一個示例更改中:
function (bsClass) {
對此:
function () {
因此,您將繼續使用之前計算的原始bsClass
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.