我可以改进这个jQuery代码重复吗?

时间:2012-09-21 09:55:54

标签: javascript jquery

我想学习jQuery的最佳实践,以及如何避免代码重复并使用优雅的代码。

我写过:

<script type="text/javascript">
  // Change the category name with the filter
  $(function() {

    // Featured
    $('.featured').click(function() {
      $('.categoryTitle h1').hide().html('Featured').fadeIn('slow');
    });
    // Web
    $('.web').click(function() {
      $('.categoryTitle h1').hide().html('Web').fadeIn('slow');
    });
    // Brand
    $('.brand').click(function() {
      $('.categoryTitle h1').hide().html('Brand').fadeIn('slow');
    });
    // Print
    $('.print').click(function() {
      $('.categoryTitle h1').hide().html('Print').fadeIn('slow');
    });
    // All
    $('.all').click(function() {
      $('.categoryTitle h1').hide().html('All').fadeIn('slow');
    });
  });
</script>

HTML

<ul id="filters">
    <li><a class="featured" href="#" data-filter=".feature-this">Featured</a></li>
    <li><a class="web" href="#" data-filter=".category-web">Web</a></li>
    <li><a class="brand" href="#" data-filter=".category-brand">Brand</a></li>
    <li><a class="print" href="#" data-filter=".category-print">Print</a></li>
    <li><a class="all" href="#" data-filter="*">Show All</a></li>
</ul>

<div class="categoryTitle"> <h1>Featured</h1> </div>

这是否尽可能优雅,或者我错过了如何停止潜入DOM?

注意我使用的是Isotope,一个jQuery插件。

编辑目前没有任何答案正在更改categoryTitle,但我确实声明它的默认值为精选。

5 个答案:

答案 0 :(得分:6)

这应该这样做:

<script type="text/javascript">
$(function() {
    $('#filters').on('click', 'a', function() {
        $('.categoryTitle h1').hide().html($(this).text()).fadeIn('slow');
    });
});
</script>

答案 1 :(得分:1)

function change(id){
$('.categoryTitle h1').hide().html(id).fadeIn('slow');
}

答案 2 :(得分:1)

试试这个demo

<script type="text/javascript">
$(function() {
    $('#filters').on('click', 'a', function() {
        $(".categoryTitle").find("h1").hide().html($(this).text()).fadeIn('slow');
    });
});
</script>

答案 3 :(得分:0)

这很简单:

  $('#filters a').click(function() {
        $('.categoryTitle h1').hide().html($(this).text()).fadeIn('slow');
  });

答案 4 :(得分:0)

$(document).ready(function(){
   $('ul#filters li a').click(function(){
           $('.categoryTitle h1').hide().html($(this).text()).fadeIn('slow')

   });
});