如何将$(this)传递给函数?

时间:2011-12-29 07:29:43

标签: jquery

我有以下可用的jQuery代码:

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

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

现在我想更改它,以便我可以将Update功能用于其他字段。到目前为止,我已经改变了它:

$(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)。现在,当我有我的一般目的 功能然后$(这)不再有效。我怎样才能将引用更改为 更新功能的参数?

3 个答案:

答案 0 :(得分:3)

使用apply

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

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

您还可以使用call

update.call(this, 'Position');

它与apply的工作方式相同,只是你没有将参数传递给数组中的函数。

答案 1 :(得分: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;

答案 2 :(得分: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");