希望我能正确解释这一点。
我正在尝试不重复代码并且有一个循环将悬停函数绑定到显示大约30个模型的菜单中的特定模型。我想能够轻松添加更多模型,所以我做了一个循环。
var models = ["#model1", "#model2", "#model3", "#model4", "#model5"];
for(var index = 0; index < models.length; ++index) {
$(models[index]).hover(fadeInAndBlock, fadeOutAndUnblock);
}
现在这很好用。这是fadeInAndBlock无法正常工作。我试图点亮一些按钮,然后阻止页面的其余部分。
function fadeInAndBlock() {
$(".productmenuinfo").block({
overlayCSS: {
backgroundColor: "#fff",
opacity: 0.6,
cursor: "default"
},
message: null
});
$(this).unblock( { fadeOut: 0});
$(this + " .btnproductmoreinfo").css({
backgroundPosition: "0px 24px"
});
$(this + " .btnproductconfigure").css({
backgroundPosition: "0px 24px"
});
}
基本上,我不能让'this'在选择器中工作。我需要它,因为选择器应该只是模型按钮。谢谢你的帮助!
答案 0 :(得分:3)
执行this + " .btnproductconfigure"
后,this.toString() + " .btnproductconfigure"
就会产生[object Object] .btnproductconfigure
。
因此,您需要使用已有的对象并使用find()
来获取您所追求的元素。
所以行
$(this + " .btnproductconfigure").css({
应该是
$(this).find(".btnproductconfigure").css({
此外,您真的不需要维护ID列表。在所有元素上使用公共类,您不必遍历并维护列表。
答案 1 :(得分:2)
您可以将其作为context in selector传递给后代查找。
语法 jQuery( selector [, context ] )
$(".btnproductmoreinfo", this ).css({
backgroundPosition: "0px 24px"
});