Javascript通配符?

时间:2012-05-17 17:39:10

标签: javascript jquery wildcard

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

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

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

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

谢谢:)

4 个答案:

答案 0 :(得分:1)

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

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

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

这会将处理程序应用于至少包含一个类的任何 a元素。你可能想稍微缩小一点,但如果没有你的更多信息,我不知道怎么做。

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


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

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

答案 1 :(得分: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);
});

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

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

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

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

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

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