【问题标题】:Javascript wildcard?Javascript通配符?
【发布时间】:2012-05-17 17:39:09
【问题描述】:

我有一些与插件一起使用的 Javascript,以便静态文本链接对应于 jquery 滑块中的特定幻灯片。它看起来像这样:

$("a.gibbs").click(function(){
  $('#anyslider').anythingSlider('.gibbs');
  });
});

所以基本上,任何带有 .gibbs 类的链接都会将滑块移动到带有 .gibbs 类的 li。

我想知道的是,由于我有近 50 张幻灯片,有没有办法说“任何带有类 .x 的链接都会将滑块移动到具有相同类 .x 的 li” - 而无需为所有 50 个类编写新的 javascript?

谢谢:)

【问题讨论】:

  • 你用的是什么插件?在不知道插件的作用的情况下很难说
  • 它被称为任何滑块,它是一个非常简单的 jquery 滑块,允许任何类型的内容。 AnythingSlider
  • 保存被点击项的类 var something = $(this).attr('class');并将其插入代码中

标签: javascript jquery wildcard


【解决方案1】:

如果我理解你,那么是的。

假设元素上只有一个类获取处理程序,

$("a[class]").click(function(){
  $('#anyslider').anythingSlider('li.' + this.className);
});

这会将处理程序应用于 任何 a 至少具有一个类的元素。您可能希望缩小范围,但如果没有您提供的更多信息,我不知道该怎么做。

此外,可能还有更好的解决方案,但同样,我们需要更多信息。


即使有多个类,只要其中一个类与目标匹配,您就可以使其工作。

$("a[class]").click(function(){
  $('#anyslider').anythingSlider('li.' + this.className.split(/\s+/).join(',li.');
});

【讨论】:

    【解决方案2】:

    查看 API,您似乎可以执行类似的操作

    $("a.gibbs").click(function(){
      var slide = $('#anyslider ' + this.className));
      $('#anyslider').anythingSlider(slide.index());
    });
    

    【讨论】:

      【解决方案3】:

      不,你不能。您的脚本如何知道哪些类的含义?当然你可以把它放在一个循环中:

      var $slider = $('#anyslider');
      ["gibbs", "gobbs", "gabbs", ...].forEach(function(className) {
           $("a."+className).click(function(){
               $slider.anythingSlider('.'+className);
           });
      });
      

      或者,如果每个链接上只有一个类:

      $("a.gibbs, a.gobbs, a.gabbs, ...").click(function moveToMyClass() {
           $('#anyslider').anythingSlider('.'+this.className);
      });
      

      【讨论】:

        【解决方案4】:

        任何给定元素都可以有多个类名。

        所以:<a class='slideme' id='gibbs'>Slideable stuff...</a>

        这取决于 anythingSlider() 方法期望的参数,但如果它接受 ID 而不是类,您可以这样做:

        $("a.slideme").click(function(){
          $('#anyslider').anythingSlider('#'.this.id);
        });
        

        如果它接受 DOM 对象或 jQuery 对象,只需分别使用 this$(this)

        【讨论】:

          猜你喜欢
          • 2011-09-09
          • 2012-02-13
          • 1970-01-01
          • 2011-06-14
          • 1970-01-01
          • 2023-03-10
          • 1970-01-01
          • 2014-12-02
          • 1970-01-01
          相关资源
          最近更新 更多