2011-12-29 113 views
0

我有以下的jQuery代码的工作原理:

$(document).ready(function() { 
    $("input[id^='pos_']").change(UpdatePosition) 
}); 

function UpdatePosition() { 
    var posVal = $(this).val(); 
    var idArr = $(this).attr("id"); 

现在我想改变它,这样我可以使用其他领域的更新功能。到目前为止,我已经改变了它这样的:

$(document).ready(function() { 
    $("input[id^='pos_']").change(function() { update('Position'); }) 
}); 

function update(fld) { 

    var val = $(this).val(); 
    var idArr = $(this).attr("id"); 
    var propertyName = fld; 

但现在我有一个问题,因为之前的函数中使用$(本)。现在,当我有我的通用功能 函数时,$(this)不再有效。我怎样才能将参考文件作为 参数更改为更新函数?

回答

1

Vivin的解决方案,或者你可以这样做:

$(document).ready(function() { 
$("input[id^='pos_']").change(function() { update($(this), 'Position'); }) 
}); 

function update(fieldThatChanged, fld) { 

var val = fieldThatChanged.val(); 
var idArr = fieldThatChanged.attr("id"); 
var propertyName = fld; 
3

使用apply

update.apply(this, ['Position']); 

的第一个参数applythis中,你是在调用apply函数的执行上下文的值。

您还可以使用call

update.call(this, 'Position'); 

它的工作方式相同apply,除非你不是在参数传递给函数的数组。

1

试试这个

$(document).ready(function() { 
    $("input[id^='pos_']").change(functin(){ 
     UpdatePosition($(this),property); 
    }); 
}); 

function UpdatePosition(obj,prop) { 
    var posVal = obj.val(); 
    var idArr = obj.attr("id");