-1

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

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

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

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

谢谢 :)

4

4 回答 4

1

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

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

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

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

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


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

$("a[class]").click(function(){
  $('#anyslider').anythingSlider('li.' + this.className.split(/\s+/).join(',li.');
});
于 2012-05-17T17:50:10.463 回答
0

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

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

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

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

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

于 2012-05-17T20:48:56.253 回答
0

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

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);
});
于 2012-05-17T17:45:02.223 回答
0

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

$("a.gibbs").click(function(){
  var slide = $('#anyslider ' + this.className));
  $('#anyslider').anythingSlider(slide.index());
});
于 2012-05-17T17:51:11.583 回答