2010-08-31 36 views
2

是否有可能停止與複選框(開/關)的jQuery功能?那裏有任何例子嗎?是否有可能通過複選框停止jQuery函數(開/關)?

+0

我不知道我是否理解正確,但是這裏有: 使用全局變量,如果它設置爲1,做些事情,否則什麼也不做。 在函數的作用域中,你檢查變量的值,並根據這個做一些事情。 – 2010-08-31 20:08:06

+0

好的......但我使用jquery的unbide,stop或其他東西嗎? – Erik 2010-08-31 20:11:23

+0

我認爲這取決於你試圖阻止的功能。如果它是您自己的自定義函數,您可以將全局值的檢查添加到函數的操作中。就像用if(shouldrun){}來包圍動作,然後在複選框中點擊shouldrun的值爲1或者0 – Michael 2010-08-31 20:23:23

回答

0

試試這個:

http://jsfiddle.net/nNREP/1/

沒有什麼神奇的這個...你只需在測試腳本,如果你的複選框被選中。如果您還想取消終止點擊鏈接(鏈接的點擊事件)或表單提交(表單提交事件)時的鏈接,則只需針對以下特定事件返回false:

$('#myForm').submit(function(e) { 
    if (!$('#mycheck').is(":checked")) { 
     return false; 
    } else { 
     //do something...or nothing...whatever... 
    } 
}); 

編輯:您的提示插件似乎沒有選項來有條件地終止腳本。您可以通過執行以下兩種操作之一來解決這個問題:在插件中添加一些條件行或者在取消選中複選框時自動禁用該插件(這可能會佔用相對較多的CPU資源)。所以,讓我們關注的第一個選項...

當您設置tiptip插件,放在這樣的事情:

$(".someClass").tipTip({maxWidth: "auto", edgeOffset: 10, enter: myFunction}); 

這myFunction的將在「active_tiptip」的一開始叫,在任何事情發生之前。轉到插件源代碼的第101行,你可以看到它是如何被調用的。我通過在文檔中搜索單詞「enter」發現了這一點......我發現了兩個實例...其中一個屬性最初是通過第35行的空函數創建的,另一個位於active_tiptip()函數的開頭。現在,如果你想成爲能夠使用myFunction的要麼取消或不取消這個腳本在tiptip.js執行,變線101:

opts.enter.call(this); 

要這樣:

if (!opts.enter.call(this)) { 
    return false; 
} 

然後創建你的myFunction的,這是否:

function myFunction() { 
    return $('#mycheck').is(":checked"); 
} 

所以檢查和假時沒有時,myFunction的將返回true。如果爲false,則會暫停active_tiptip()函數的執行,從而確保您的工具提示不會彈出。

這就像我願意爲此一樣深。其餘的你可以自己弄清楚。

+0

你的邏輯有效,但你還沒有回答我的問題的癥結所在。一個功能可以被馴服/停止。我所指的功能是一個jQuery提示彈出窗口,我想用一個複選框禁用它。 – Erik 2010-08-31 20:33:02

+0

你的問題的「關鍵」從來沒有明確說過,所以我不知道我們如何期望知道你的意思。如果你想得到這個答案,我們需要知道你的其他代碼是什麼樣的。這個插件是幹什麼的?什麼時候被叫?我基本上沒有什麼信息可以繼續。 – treeface 2010-08-31 20:38:35

+0

非常抱歉.. jquery插件是:http://code.drewwilson.com/entry/tiptip-jquery-plugin – Erik 2010-08-31 20:40:17

0

事情是這樣:

function something() { 
    if ($("my.checkbox:checked").size() > 0) { 
      // do something 
    }else{ 
      // do nothing 
    } 
} 

沿着這些線路的東西反正。

+0

真棒,但是要調用一個STOP或終止一個函數,我在用什麼? – Erik 2010-08-31 20:17:18

+0

在執行過程中,您無法真正停止外部功能。至少我從來沒有聽說過JavaScript中存在的中斷... – 2010-08-31 21:01:45

相關問題