是否可以更改切换功能的状态?像:更改JavaScript/jQuery中切换的状态
myDiv.toggle ...功能1,功能2
- 我的myDiv元素上点击,功能1执行
- 我再次点击,功能2
- 我再次点击,功能1 BUT
- 更改状态
- 功能1再次 等
但我需要能够从切换功能外部更改状态。
是否可以更改切换功能的状态?像:更改JavaScript/jQuery中切换的状态
myDiv.toggle ...功能1,功能2
但我需要能够从切换功能外部更改状态。
下面是一个使用闭合跟踪它的状态和触发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);
});
});
这不提供重置状态的方法。 – ThiefMaster 2012-01-29 15:24:26
谢谢,它完美的工作,我的最终代码:http://jsfiddle.net/yjPKH/11/ – 2012-01-29 15:26:09
@ThiefMaster我刚刚定义了_state变量的TOGGLER函数,现在我可以从其他函数改变它,如果这是你的意思是。 – 2012-01-29 15:27:21
切换功能适用于简单用例。外部改变状态不再“简单”了。
因为它存储在元素的内部数据集中,所以不能轻松/安全地(它是内部的,因此它可能会在较小版本中更改)轻松访问toggle功能的状态变量。
如果你真的想这样做,你可以尝试虽然这段代码:
$._data(ELEMENT, "lastToggle" + func.guid, 0);
func
是你传递给.toggle()
的功能,所以你需要保存这个函数中的一个变量。这里有一个小例子:http://jsfiddle.net/xqgrP/
然而,由于在函数内部有一个var guid = fn.guid || jQuery.guid++
声明,不知何故,我觉得开发者实际上意味着使用而不是func.guid
为_data
关键 - 在这种情况下,一个小的更新是非常有可能打破事情。修复之后,您必须遍历数据集才能检索正确的密钥,因为无法从外部访问该GUID。
我明白了。所以我认为通过一些变量或带id的空白div进行自定义切换比较简单。 – 2012-01-29 14:49:36
http://jsfiddle.net/XWnZq/1/应该可以工作,但我不知道为什么id不。 – 2012-01-29 14:58:01
说实话,那看起来就像缺乏基本的js知识......当你有jQuery可用时,为什么你会用'document.getElementById'这样的东西?!实际上,你将它与jQuery函数混合在一起,所以你的代码**根本无法工作! – ThiefMaster 2012-01-29 15:18:14
你有没有试过一些代码? – Mike 2012-01-29 14:36:09
什么?你能给出一个伪代码的例子来说明你想达到什么,或者更好的解释吗?当涉及到步骤4和步骤5时,您的问题有点令人困惑。 – Bojangles 2012-01-29 14:36:43