通过$(本)从功能发挥作用
问题描述:
我对不同类别的2个不同的事件:
$('.box1').click(function(){
$(this).find('something').css('red')
}
$('#otherId .box2').change(function(){
$(this).find('something').css('red')
}
但我打算出来拆分功能,以避免重复的代码
function getDetails(this){
this.find(".something").css('red');
}
但以后如何调用函数?将$(this)传递给函数?
$('#otherId .box2').change(function(){
getDetails($(this))
}
答
this
是一个关键字,所以它不可能是一个PARAM名
function getDetails(el) {
el.find(".something").css('red');
}
$('#otherId .box2').change(function() {
getDetails($(this))
})
答
this
不能用来作为参数的关键字,但可以保留在函数体内使用this
:
function getDetails()
{
$(this).find(".something").css('red');
}
然后调用它像这样:
$('#otherId .box2').change(function() {
getDetails.call(this);
}
+0
哦,它的丑陋:-) – zerkms
+0
@zerkms这就是她说...刚醒来,无法抗拒;-) –
答
您可以使用这样的事情能够穿过它,如果你想获得的输入值,然后改变它输出的最终值旁边:
var finalOutput;
function getDetails(args) {
args = "Hello World";
return args;
}
$('.box2').change(function(){
var inputValue = $(this).val();
finalOutput = getDetails(inputValue);
$('.box2').after('<b>' + finalOutput + '</b>');
});
这里一个工作示例:
这比使用call()更好吗? –
两者都是相同的...但我更愿意将它作为参数传递,而不是更改我看到的执行上下文 –
。这也比较容易理解。 –