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

Javascript 我可以改进jQuery代码重复吗?,javascript,jquery,Javascript,Jquery,我想学习jQuery的最佳实践,以及如何避免代码重复和使用优雅的代码 我写过: <script type="text/javascript"> // Change the category name with the filter $(function() { // Featured $('.featured').click(function() { $('.categoryTitle h1').hide().html('Featured').f

我想学习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

这是尽可能的优雅,还是我错过了如何停止跳入DOM

注意,我使用的是同位素,一个jQuery插件

编辑当前没有一个答案正在更改categoryTitle,但我建议它的默认值为Featured。

这应该可以做到:

function change(id){
$('.categoryTitle h1').hide().html(id).fadeIn('slow');
}
<script type="text/javascript">
$(function() {
    $('#filters').on('click', 'a', function() {
        $('.categoryTitle h1').hide().html($(this).text()).fadeIn('slow');
    });
});
</script>
这应该做到:

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

就这么简单:

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

就这么简单:

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

试试这个



是的,清理的一部分需要在你的HTMl中。对,清理的一部分需要在你的HTMl中。把它也贴出来我想这行不通,因为h1似乎不是$this的子元素。它没有更新分类。请查看我的回答中的演示链接。我一生都无法找出为什么这对我不起作用。请查看控制台,如果发现错误,也可以向我们显示页面,如果它是活的,您在哪里遇到错误我认为这不起作用,由于h1似乎不是$this的子元素。它没有更新类别。请查看我回答中的演示链接。我无法用一生的时间来找出为什么这对我不起作用。如果发现错误,请查看控制台,如果它是live,请向我们显示页面,如果它是live,则您会收到错误。很遗憾,它没有从过滤器aOh获取文本真的吗?奇怪的我知道了。请注意,我添加了e.preventDefault-如果您愿意,可以省略它,但它会停止将字符片段默认附加到URL。categoryTitle h1的默认值为FeaturedI我不确定我是否理解-默认值将是HTML中的任何内容。在我的示例中,我将其留空。你是说我的例子不适合你吗?您使用的是哪个版本的jQuery,是否存在任何控制台错误?如果您使用的是旧版本,您可能需要将.on改为.bind。我也很困惑-我现在使用的是jQuery 1.8.0。遗憾的是,它没有从过滤器aOh获取文本真的吗?奇怪的我知道了。请注意,我添加了e.preventDefault-如果您愿意,可以省略它,但它会停止将字符片段默认附加到URL。categoryTitle h1的默认值为FeaturedI我不确定我是否理解-默认值将是HTML中的任何内容。在我的示例中,我将其留空。你是说我的例子不适合你吗?您使用的是哪个版本的jQuery,是否存在任何控制台错误?如果您使用的是较旧的版本,您可能需要将.on改为.bind。我也很困惑-我现在正在使用jQuery 1.8.0。
$(document).ready(function(){
   $('ul#filters li a').click(function(){
           $('.categoryTitle h1').hide().html($(this).text()).fadeIn('slow')

   });
});