2012-01-22 2 views
1

Мой код работает так, как я хотел бы его, но я ищу какой-либо критики о том, как он может быть урезан или изменены, чтобы быть более эффективным:Функция jQuery toggle(). Я хотел бы некоторые критики или предложения по улучшению практики

$('.toggle-comments').hide(); // this hides the results div when the page loads.     
$(".comments-toggle-click").click(function() {        
    $(".toggle-comments").slideToggle("slow"); 
    $(".comments-toggle-click").remove(); 
});    
+2

Скрыть комментарии через CSS, а не jquery. Я считаю, что CSS скрывается намного быстрее, чем ждать загрузки DOM, а затем скрывает их. – Scott

+0

Вместо '$ (". Комментарии-toggle-click "). Remove()' вы могли бы написать '$ (this) .remove()'. Этот подход предпочтительнее, если вы фактически не удаляете несколько элементов. – davidchambers

+0

Это хорошая практика, чтобы спрятаться в jquery, а не в CSS. В противном случае пользователи, не являющиеся js пользователями/программами чтения, независимо от того, что еще может просмотреть комментарии. – Galaxy

ответ

2

Вместо того, чтобы звонить $('.toggle-comments').hide(); на загрузку страницы, почему бы не сделать комментарии с display:none;?

1

CSS:

.toggle-comments { 
    display: none; 
} 

JavaScript:

$('.comments-toggle-click').click(function() {        
    $('.toggle-comments').slideToggle('slow', function() { 
    $('.comments-toggle-click').remove() 
    }) 
}) 

Хитрость заключается в том, чтобы передать .slideToggle функцию обратного вызова, если вы хотите, чтобы задержать удаление ссылки, пока анимация не завершится. Это может быть или не быть проблемой, о которой вы избегаете в своем вопросе.

Смежные вопросы