Дійсно просте питання. Як я можу зробити наступний скрипт у простій за петля:
jQuery(document).ready(function(){
jQuery("#toggle-0").click(function(){
jQuery("#toggle-list-0").slideToggle(500);
});
jQuery("#toggle-1").click(function(){
jQuery("#toggle-list-1").slideToggle(500);
});
jQuery("#toggle-2").click(function(){
jQuery("#toggle-list-2").slideToggle(500);
});
});
The за цикл призначений як у Python:
for i in range(3): a, b = "#toggle-" + str(i), "#toggle-list-" + str(i)
Дякую!
Відповіді:
2 для відповіді № 1Ваш код порушує принцип DRY.
- Немає необхідності мати один окремий
ready
блоку для кожного обробника подій. - Необхідно розглянути можливість використання класів і селектора класів замість селекторів ідентифікаторів і використовувати потужність Методи переходу DOM jQuery для вибору цільових елементів.
- Використання циклу - це поганий варіант / не потрібний. Більшість методів jQuery були розроблені для перегляду колекції за кулісами.
Ось приклад використання селектора, розділеного комами:
jQuery(document).ready(function($){
$("#toggle-0, #toggle-1, #toggle-2").click(function() {
var num = this.id.replace("toggle-", "");
$("#toggle-list-" + num).slideToggle(500);
});
});
Вищезгаданий фрагмент є одним із способів мінімізації вихідного коду, але уявіть, що ви хочете додати ще 10 ідентифікаторів до селектора. Тепер ви не підтримуєте код і не має ніякого сенсу.
2 для відповіді № 2
Iterate з циклом for всередині документа готового зворотного виклику. Не забудьте закрити i
так, щоб він не змінювався в обробнику подій клацання.
jQuery(document).ready(function(){
for(var i = 0 ; i < 3; i++){
(function(i){
jQuery("#toggle-"+i).click(function(){
jQuery("#toggle-list-"+i).slideToggle(500);
});
})(i)
}
});
0 для відповіді № 3
$(document).ready(function(){
for(i = 0; i < 3; i++)
{
$("#toggle-"+i).click(function(){
$("#toggle-list-"+i).slideToggle(500);
});
};
});
Але я настійно рекомендую змінити ідентифікатор на імена;
Замість того, щоб увімкнути toggle0; toggle1; toggle2 просто покласти одне ім'я = перемикати Тоді ви просто отримаєте масив перемикань, подібних до цього:
var toggles = $("toggle");
І працювати з ним.