2011-12-29 148 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");