2016-07-07 24 views
-2

我寫了一組JavaScript函數,並想知道我是否可以使函數更簡單(例如更全局的函數)?Javascript - 如何避免這種倍數功能的同樣建議?

我公司是一家集5間切換爲,我想編寫一個函數toggleOntoggleOff的。我寫了這麼遠是:

function toggleOn1() { 
$('#chk1').bootstrapToggle('on');      
} 

function toggleOff1() {   
$('#chk1').bootstrapToggle('off'); 
} 

function toggleOn2() { 
$('#chk2').bootstrapToggle('on');      
} 

function toggleOff2() {   
$('#chk2').bootstrapToggle('off'); 
} 

function toggleOn3() { 
$('#chk3').bootstrapToggle('on');      
} 

function toggleOff3() {   
$('#chk3').bootstrapToggle('off'); 
} 

// etc. 
+9

'function toggle(what,state){$(what).bootstrapToggle(state);}'??? –

+0

@NiettheDarkAbsol,或者'jQuery-event-binding' – Rayon

+1

你需要看看你的代碼,並開始識別它的所有變量,然後編寫一個接受這些變量的函數。在這種情況下,元素和它的狀態。既然這是一個切換,你甚至不需要'狀態'變量。你很清楚如何編寫代碼,很遺憾看到有這麼多人投票回答你的問題...... – rafaelbiten

回答

2

傳遞jQuery選擇到功能

function toggle(selector,state){ 
     $(selector).bootstrapToggle(state); 
} 

選擇器和狀態都是字符串。

你可以這樣調用

toggle('#chk1','off'); 
2

任何時候你有一些參數(函數名的一部分,是該函數的代碼做什麼),這是相同的,那麼反過來說「相同」到一個參數:

function toggleGeneric(id, value) { 
    $('#chk' + id).bootStrapToggle(value); 
} 
4

喜歡的東西:

function customToggle(element, state) { 
    $(element).bootstrapToggle(state); 
} 
+0

關於這個答案的一個註釋,你需要在沒有jQuery包裝器的情況下傳遞你的元素(就像customToggle(' #chk2','off')) – will

1

您可以通過selector爲一體的function

function toggleOnOff(selector,state){ 
     $(selector).bootstrapToggle(state); 
} 

參數,或者如果你想改變你不需要通過國家狀態基於前一個:

function toggle(selector){ 
     $(selector).bootstrapToggle(); 
} 

參考here

1

嘗試這樣的事情..

var on = 1; 
function toggle() { 
if (on == 1) { 
$('#chk1').bootstrapToggle('off'); 
on = 0; } 
else if (on == 0) { 
$('#chk1').bootstrapToggle('on'); 
on = 1; 
} else { 
} 
} 
1

添加類,每個元素和改變像SEW代碼:

$('.chk').on('click', function() { 
    $(this).bootstrapToggle(); 
}); 

切換應該足夠聰明,知道之間的區別開關。