2013-08-23 48 views
0

我想使用jQuery禁用JavaScript函數(dialogs())。使用jQuery禁用函數

我認爲做的是:

  • 裹在一個跨度的功能:"<span class = 'auto'>" + dialogs(i,0); + "</span>"
  • 如果複選框被選中,做到:(此if語句是$(document).ready(function(){

    if ($("#autodialog").is(":checked")) { 
        $(".auto").remove(); } 
    

但這似乎沒有工作。

有什麼想法?

+0

.....呃?什麼? o_O – Ben

+1

@Ben什麼讓你感到困惑?我想讓用戶決定是否運行某個javascript函數...所以我給他們一個複選框...當它被檢查時,它應該註釋掉運行的函數(函數是一個函數內的遞歸函數) – Growler

+0

我想整個「禁用JavaScript函數」。 nvm – Ben

回答

4

讓您dialogs方法來處理額外的參數isEnabled,一個布爾值數據類型。

function dialogs(i,0,isEnabled) { 
if(isEnabled) { 
    //Todos 
} 
} 

然後讓它看起來像這樣

if ($("#autodialog").is(":checked")) { 
    dialogs('i',0,false); //I'm not sure about the values of parameter i 
    } 

所以沒有必要使用span標籤作爲一個包裝的。

希望你能理解。

+0

非常感謝!奇蹟般有效。 – Growler

+0

@Growler我很高興能夠提供幫助。 – Praveen

0

你將有一個點擊處理程序添加到複選框

$("#autodialog").click(function(){ 
if ($(this).is(":checked")) { 
    dialogs(i,no,false); } 
else 
    dialogs(i,no,true); 
}); 


function dialogs(i,no,flag){ 
if(!flag) 
{event.preventDefault();return flag;} 
else{ 
    ......//your working code} 
} 
+0

想到我可以讓'document.ready'通過if語句運行而不需要處理程序 – Growler

+0

@Growler你是否在複選框時檢查了docuement的加載?無權利?!所以,如果條件不會是真的 – rps

+0

此外,我可以不用刪除它以某種方式禁用該功能?如果用戶取消選中該框,我希望該函數能夠再次運行......所以我不會輕鬆移除它將會很好 – Growler

1

多一點背景下將是有益的(你有一個的jsfiddle我們可以看到?)

我想你可能會產生混淆的JavaScript函數,從函數的返回值。您是否試圖刪除由對話框()函數生成的一串HTML,或者您是否試圖刪除實際的對話框功能本身?

如果要禁用對話功能:

<script> 
    function getDialogs(a,b) { 
     // ... 
    } 

    var dialogs = getDialogs; // Make dialogs refer to getDialogs 
</script> 

在其他地方,你會碰到這樣的:

<script> 
    if ($("#autodialog").is(":checked")) { 
     dialogs = function __noop__() {}; 
    } else { 
     dialogs = getDialogs; 
    } 
</script>