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