我的测试代码:
var colorChanged = function (c) {
//valid syntax:
(function (x) {
x.css('color', '#f00')
})($('.' + c));
//invalid syntax:
(function (this) { //Uncaught SyntaxError: Unexpected token this
this.css('color', '#f00')
})($('.' + c));
};
<div class="demo">Div text</div>
<button onclick="colorChanged('demo')">Change color</button>
我引用了Immediately-invoked function expression,但没有提到在这种情况下使用this
。
我的问题是:在示例中有没有办法将this
用作元素(this = $('.' + c)
)?
答案 0 :(得分:2)
是的,有一种方法可以在IIFE中使用this
,您可以在致电IIFE之前将thisValue
与bind()
绑定。
(function() {
this.css('color', '#f00')
}).bind($('.' + c))();
答案 1 :(得分:1)
你可以使用bind()或call()或apply()并传递&#39;这个&#39;通过它们,您的范围已经更改为&#39;这个&#39; ...
在javascript中使用这些函数总是很好的做法,而不是将它附加到函数中......
最好的选择是调用你的代码......
(function() {
this.css('color', '#f00')
}).call($('.' + c));
在javascript中使用click处理程序,使代码更清晰,可以使编码结构更好,你也可以在jQuery中使用多个选项来保持HTML清洁,如果需要更多的选择器来处理这个功能...