2017-02-23 1075 views
2

Как оптимизировать эти функции? Могу ли я сделать одну функцию для всех операций?как оптимизировать этот код javascript?

$('#b-hat1').click(function() { 
 
    $('#hat3').hide(); 
 
    $('#hat2').hide(); 
 
    $('#hat1').show(); 
 
}); 
 
$('#b-hat2').click(function() { 
 
    $('#hat3').hide(); 
 
    $('#hat2').show(); 
 
    $('#hat1').hide(); 
 
}); 
 
$('#b-hat3').click(function() { 
 
    $('#hat3').show(); 
 
    $('#hat2').hide(); 
 
    $('#hat1').hide(); 
 
});

+1

добавить HTML размечать – guradio

+5

Не могли бы вы добавить свой HTML код на вопрос таким образом, мы можем видеть, как '# б-hatX' связаны с' # hatX' элементов –

+0

добавить HTML-код –

ответ

15

Без вашего HTML, я могу только дать вам "rought" идею о том, как ее решить.

$("div[id^='hat']").hide(); скрывает все Div, начинающегося с hat

$('div[id^="b-hat"]').click(function() { 
 
    var id = $(this).attr("id").replace("b-",""); 
 
    $("div[id^='hat']").hide(); 
 
    $('#' + id).show(); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="hat1">hat1</div> 
 
<div id="hat2">hat2</div> 
 
<div id="hat3">hat3</div> 
 
<br><br> 
 

 
<div id="b-hat1">Show hat1</div> 
 
<div id="b-hat2">Show hat2</div> 
 
<div id="b-hat3">Show hat3</div>

+0

что делает этот оператор '^ ='? – nueq

+2

'^ =' в 'id^= 'hat' означает, что он принимает все' id's', который начинается с «hat» –

+0

Есть ли список таких операторов? Было бы полезно знать. Кстати, почему вы не использовали атрибуты данных – sinhavartika

6

Покажет DIV только после нажатия на определенной кнопке DEMO:

$(document).ready(function(){ 
 
$(".hat").hide(); 
 
    $(".clickMe").on("click",function(){ 
 
     var showDiv = $(this).data("id");  
 
     $(".hat").hide(); 
 
     $("#hat_"+showDiv).show(); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
 
<button class="clickMe" data-id="1" type="button">1</button> 
 
<button class="clickMe" data-id="2" type="button">2</button> 
 
<button class="clickMe" data-id="3" type="button">3</button> 
 

 
<div id="hat_1" class="hat">hat_1</div> 
 
<div id="hat_2" class="hat">hat_2</div> 
 
<div id="hat_3" class="hat">hat_3</div>