【问题标题】:How can I simplify this jquery?我怎样才能简化这个jquery?
【发布时间】:2009-12-03 07:05:57
【问题描述】:

我有以下想要简化的 jquery。

我只是在重复同样的事情。

谁能给我建议。

提前致谢。

$("a[rel='imagebox-all']").colorbox({slideshow:true});
$("a[rel='imagebox-new']").colorbox({slideshow:true});
$("a[rel='imagebox-even']").colorbox({slideshow:true});
$("a[rel='imagebox-amina']").colorbox({slideshow:true});
$("a[rel='imagebox-cumulus']").colorbox({slideshow:true});
$("a[rel='imagebox-wee']").colorbox({slideshow:true});
$("a[rel='imagebox-four']").colorbox({slideshow:true});
$("a[rel='imagebox-teen']").colorbox({slideshow:true});

【问题讨论】:

    标签: javascript jquery jquery-selectors


    【解决方案1】:

    假设没有您要排除的 imagebox-* 的其他值:

    $("a[rel^='imagebox-']").colorbox({slideshow:true});
    

    话虽如此,通常最好避免使用属性选择器,并且通常最好重组问题以提供更好的解决方案。就像你可以使用类一样:

    <a href="..." class="imagebox teen"> ...
    

    注意空格:这是分配的两个类。所以你可以这样做:

    $("a.imagebox")...
    

    为所有人。或者:

    $("a.imagebox.teen")...
    

    只为其中之一。

    请记住,您可以使用逗号添加多个选择器:

    $("a.class1, a.class2")...
    

    将您正在执行的操作应用于具有 class1 或 class2 的锚点,而不是:

    $("a.class1.class2")...
    

    它将您正在执行的任何操作应用于具有 class1 和 class2 的锚点。

    【讨论】:

      【解决方案2】:

      您可以使用attributeStartsWith 选择器来匹配具有指定属性的元素,并且它以某个值开头。

      $("a[rel^='imagebox-']").colorbox({slideshow:true});
      

      【讨论】:

        【解决方案3】:

        你能用吗

        $("a[rel^='imagebox']").colorbox({slideshow:true});
        

        适用于任何带有以imagebox开头的rel属性的a标签?

        【讨论】:

          【解决方案4】:

          记住至少要像这样结构化。

          $("a[rel='imagebox-all']")
          .colorbox({
          slideshow: !0
          }), $("a[rel='imagebox-new']")
          .colorbox({
          slideshow: !0
          }), $("a[rel='imagebox-even']")
          .colorbox({
          slideshow: !0
          }), $("a[rel='imagebox-amina']")
          .colorbox({
          slideshow: !0
          }), $("a[rel='imagebox-cumulus']")
          .colorbox({
          slideshow: !0
          }), $("a[rel='imagebox-wee']")
          .colorbox({
          slideshow: !0
          }), $("a[rel='imagebox-four']")
          .colorbox({
          slideshow: !0
          }), $("a[rel='imagebox-teen']")
          .colorbox({
          slideshow: !0
          })
          

          【讨论】:

            【解决方案5】:

            试试这个:

            var selectors = [
                "a[rel='imagebox-all']",
                "a[rel='imagebox-new']",
                "a[rel='imagebox-even']",
                // ...
            ];
            
            $.each(selectors, function(){
                $(this).colorbox({slideshow:true});
            });
            

            然后,每当您需要添加新的选择器时,只需将其添加到选择器数组中即可。

            【讨论】:

              猜你喜欢
              • 2022-01-11
              • 1970-01-01
              • 2011-01-26
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2020-06-08
              • 2019-11-10
              相关资源
              最近更新 更多