这是原始功能:
$(document).on('click', '.itemove', function() {
$('.itemoveact').removeClass('itemoveact');
$(this).addClass('itemoveact');
});
现在我想通过调用另一个函数来做同样的事情:
$(document).on('click', '.itemove', function() {
swclass('itemoveact');
});
function swclass(c){
$('.' + c).removeClass(c);
$(this).addClass(c);
}
什么都没发生。传递this
上下文存在问题。
任何帮助?
答案 0 :(得分:1)
您可以使用Function.prototype.apply()
$(document).on('click', '.itemove', function() {
swclass.apply(this, ['itemoveact']);
});
答案 1 :(得分:0)
在swclass
函数
function swclass(c){
$('.' + c).removeClass(c);
$(this).addClass(c);
}
this
只是一个指向window
对象的引用。
一种解决方案是使用bind
方法。
bind()方法创建一个新函数,当被调用时,它具有它 此关键字设置为提供的值,具有给定的序列 调用新函数时提供的任何参数。
$(document).on('click', '.itemove', function() {
swclass.bind(this)('itemove');
});
function swclass(c){
$('.' + c).removeClass('red');
$(this).addClass('blue');
}
.red{
color:red;
}
.blue{
color:blue;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p class="itemove red">Hello</p>
答案 2 :(得分:0)
尝试以下
$(document).on('click', '.itemove', function() {
swclass.bind(this)('itemoveact');
});
function swclass(c){
$('.' + c).removeClass(c);
$(this).addClass(c);
}
swclass.bind(本)(&#39; itemoveact&#39);
绑定功能将适用于您的“#itemove&#39; to swclass function然后拨打电话。
答案 3 :(得分:0)
你可以通过一些箍来改变this
的值,但是将它作为一个参数传递会更容易,更简单:
$(document).on('click', '.itemove', function() {
swclass('itemoveact', this);
});
function swclass(c, addTo){
$('.' + c).removeClass(c);
$(addTo).addClass(c);
}