是否可以更改切换功能的状态?像:
myDiv.toggle ...功能1,功能2
但我需要能够从切换功能外部改变状态。
答案 0 :(得分:0)
切换功能适用于简单的用例。从外部改变状态不再是“简单”了。
你不能轻易/安全地(它是内部的,因此它可能会在次要版本中发生变化)轻松访问切换功能的状态变量,因为它存储在元素的内部数据集中。
如果你真的想这样做,你可以试试这个代码:
$._data(ELEMENT, "lastToggle" + func.guid, 0);
func
是您传递给.toggle()
的函数,因此您需要将此函数保存在变量中。这是一个最小的例子:http://jsfiddle.net/xqgrP/
但是,由于函数内部有一个var guid = fn.guid || jQuery.guid++
语句,我不知何故认为开发人员实际上意味着使用guid
而不是func.guid
用于_data
键 - 这种情况下,一个小的更新很可能会破坏事情。在修复之后,您必须遍历数据集以检索正确的密钥,因为无法从外部访问guid。
答案 1 :(得分:0)
这是一个javascript对象,它使用闭包来跟踪它的状态和切换:
var TOGGLER = function() {
var _state = true;
var _msg = "function1";
var function1 = function() {
_msg = "function1";
}
var function2 = function() {
_msg = "function2";
}
return {
toggle: (function () {
_state = !_state;
if (_state) {
function1();
} else {
function2();
}
return _msg;
})
}
}();
这是一个jsfiddle,显示如何使用它来切换基于以下jquery:http://jsfiddle.net/yjPKH/5/
$(document).ready(function() {
$("#search").click(function() {
var message = TOGGLER.toggle();
$("#state").text(message);
});
});