3
$("a[rel=example_1],a[rel=example_2],a[rel=example_3],a[rel=example_4],a[rel=example_5],a[rel=example_6],a[rel=example_7],a[rel=example_8],a[rel=example_9],a[rel=example_10]").fancybox({............

您好,现在我必须手动输入这些代码。

有没有简单的方法来增加数字?

我知道我可以使用类似于a[rel=example_[1-10]]. 什么是正确的语法?

非常感谢

4

6 回答 6

8

您可以使用以选择器开头的属性

a[rel^="example_"]

这将选择所有具有以“example_”开头a的属性的元素。rel如果您想选择与该模式匹配的所有元素,我会推荐这种循环。

于 2012-07-25T04:08:44.460 回答
5

如果你没问题 - 你可以选择

$('a[rel^="example_"]').

它会匹配所有a开始relexample_

否则 - 使用精细过滤:

$('a[rel^="example_"]').filter(function() {
    var match = $(this).prop('rel').match(/^example_(\d+)$/);
    return match.length == 2 && parseInt(match[1]) <= 10;
})

显式检查下划线后.filter()是否有数字的回调1..10

于 2012-07-25T04:08:35.487 回答
4

一种可能的解决方案是使用循环。

var element = 'a[rel=example_';
var elements = [];

for(var i = 1; i <= 10; i++){
    elements.push(element + i.toString() + ']');
}

elements = elements.join(', ');

$(elements).fancybox()

或者,如果您想将所有元素与rel 包含“example_”的元素匹配,您可以使用如下属性选择器:

$('a[rel*="example_"]').fancybox()

最后,您可以简单地使用一个类来链接所有元素并通过引用公共类来选择它们。

于 2012-07-25T04:08:34.147 回答
2

使用 for 或 while 循环。每次迭代时,都会向计数器变量添加一个,或者如果您使用 for 循环,它会自行完成。

继承人一些伪代码:

var output

for count 1 to 10:

output .= $("a[rel='example'" + count];

next for
于 2012-07-25T04:07:47.030 回答
1

您可以使用此选择器选择所有以“example_”开头的元素:

$('a[rel^=example_])
于 2012-07-25T04:09:17.007 回答
0

您可以生成一个字符串用作查询:

var query = [];
for(var i=1;i<=10;i++)
    query.push('a[rel=example_' + i + ']');
$(query.join(',')).fancybox({});
于 2012-07-25T04:09:23.213 回答