是否可以更改切換功能的狀態?像:更改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