gpt4 book ai didi

javascript - 使用 jQuery 时如何将控件传递给函数?

转载 作者:行者123 更新时间:2023-11-30 00:05:55 26 4
gpt4 key购买 nike

“#SelectView”是一个Select控件,代码A很好用,希望自己写一个函数来实现,

但是方法一和方法二都失败了,为什么?我该如何编写函数?

代码A

$("#SelectView").change(function () {
temp.view = $("#SelectView").get(0).selectedIndex;
window.location.href = CreateJumpLink(temp);
});

方法一

SetJumpForSelectChanged('#SelectView', temp.view);

function SetJumpForSelectChanged(name, par) {
$(name).change(function () {
par = $(name).get(0).selectedIndex;
window.location.href = CreateJumpLink(temp);
});
}

方法二

SetJumpForSelectChanged( $('#SelectView'), temp.view);

function SetJumpForSelectChanged(name, par) {
name.change(function () {
par = $(name).get(0).selectedIndex;
window.location.href = CreateJumpLink(temp);
});
}

已添加

function ClassURLPar() {
this.filename;
this.diskindex=0;
this.diskcount=1;
this.imagefilter = 0;
this.sortby = 0;
this.path = "/";
this.view = 0;
}


var temp = jQuery.extend(true, {}, mURL);

最佳答案

在 JavaScript 中,传递原语(如字符串)时,您不会通过引用传递。因此,在第一个中,您传入 temp.view,它在函数内部作为 par 存在。您修改 par,但随后什么也不做,而是将原始 temp 传递给 CreateJumpLink

令人困惑的是(如果您是 JS 新手)当您的参数是一个对象时,它是通过引用传递的。

SetJumpForSelectChanged('#SelectView', temp);

function SetJumpForSelectChanged(name, tempReference) {
$(name).change(function () {
tempReference.view = $(name).get(0).selectedIndex;
window.location.href = CreateJumpLink(tempReference); // or temp, same result if it's in scope
});
}

如果 temp 在两个地方都在范围内,那么您根本不需要传入它。

关于javascript - 使用 jQuery 时如何将控件传递给函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38580564/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com