按钮变量范围 - 如何更新父范围中的变量?jQuery.
button variable scope - how to update variable in parent scope? jQuery
更新了jsFiddle:http://jsfiddle.net/leongaban/NmH97/
我的主函数中有一个按钮状态修饰符函数和几个单击函数。
在更新父函数中的布尔值时遇到一些麻烦。我可以通过使用全局变量来解决这个问题,但我知道我不应该在这里这样做。
在下面的函数中,当单击 #toggle_company 时,我将布尔公司(默认情况下设置为 true)传递到 setupToggleButtons
函数中。然后切换当前状态,但原始company
布尔值保持不变,您将如何将其写入目标并更新父函数wireSearchIcons
中的变量公司?
var wireSearchIcons = function() {
// Boolean Flags
var company = true;
var phone = true;
var orange_on = '#F37B21'; var orange_off = '#f3cdb1';
var green_on = '#3DB54A'; var green_off = '#d8e0c3';
// Other code...
$("#toggle_company").unbind('click').bind('click', function () {
setupToggleButtons(company, '#toggle_company path', orange_on, orange_off);
});
function setupToggleButtons(bool, path, on, off) {
var path = $(path);
if (bool) {
path.css('fill', off);
bool = false;
return bool;
} else {
path.css('fill', on);
bool = true;
return bool;
}
console.log(bool);
}
}
在函数调用中使用变量时,将发送变量包含的值,而不是变量本身。更改参数不会影响值的来源变量。
Javascript 不支持通过引用发送参数,因此只需从函数返回值,并将其赋回变量:
$("#toggle_company").unbind('click').bind('click', function () {
company = setupToggleButtons(company, '#toggle_company path', orange_on, orange_off);
});
function setupToggleButtons(bool, path, on, off) {
var path = $(path);
if (bool) {
path.css('fill', off);
bool = false;
} else {
path.css('fill', on);
bool = true;
}
return bool;
}
编写一个很少的setupToggleButtons函数是没有意义的。 应将代码内联到单击处理程序中,或在设置函数中创建单击处理程序。
var wireSearchIcons = function() {
// Flags
var company = true;
var phone = true;
var orange_on = '#F37B21'; var orange_off = '#f3cdb1';
var green_on = '#3DB54A'; var green_off = '#d8e0c3';
// Toggle Button States
$("#toggle_company").unbind('click').bind('click', function () {
company = !company;
$('#div_company').css('background', company ? orange_on : orange_off);
});
$("#toggle_phone").unbind('click').bind('click', function () {
phone = !phone;
$('#div_phone').css('background', phone ? green_on : green_off);
});
}
wireSearchIcons();
相关文章:
- js命名空间和变量范围
- 如何确保变量范围在这个循环中得到维护
- 在两个浏览器选项卡之间共享变量范围
- 文件API中的Javascript变量范围
- javascript和jQuery的嵌套对象函数中的变量范围
- JavaScript 函数变量范围问题
- JavaScript 中变量范围的问题
- Javascript - 揭示对象和变量范围
- 主干.js(具有 Require.js)变量/范围访问问题
- Javascript 变量范围未定义
- 如何绕过javascript变量范围
- IE 8变量范围错误
- 了解 Javascript 变量范围
- 控制变量范围
- 函数之间的Javascript变量范围问题
- 这种减少if语句中声明的变量范围的模式是一种好的做法吗
- 用于未初始化的局部变量的javascript变量范围
- 变量范围
- 请求节点模块变量范围
- Javascript 和 JQuery dom 全局变量范围