Javascript - 如何避免这种倍数功能的同样建议?

Javascript - 如何避免这种倍数功能的同样建议?

问题描述:

我写了一组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

传递jQuery选择到功能

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

选择器和状态都是字符串。

你可以这样调用

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

任何时候你有一些参数(函数名的一部分,是该函数的代码做什么),这是相同的,那么反过来说“相同”到一个参数:

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

喜欢的东西:

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

关于这个答案的一个注释,你需要在没有jQuery包装器的情况下传递你的元素(就像customToggle(' #chk2','off')) – will

您可以通过selector为一体的function

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

参数,或者如果你想改变你不需要通过国家状态基于前一个:

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

参考here

尝试这样的事情..

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

添加类,每个元素和改变像SEW代码:

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

切换应该足够聪明,知道之间的区别开关。