2012-07-25 45 views
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

一個潛在的解決辦法是使用一個循環。

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() 

最後,你可以簡單地使用類鏈接所有元素並通過引用常用類來選擇它們。

+0

感謝您的回答,這兩種方式似乎都不適合fancybox。既不是$('a [rel * =「example _」]')。fancybox({.........})或者使用var方法。這是fancybox問題嗎? – olo 2012-07-25 04:38:16

+1

對不起我的錯!有用!!!非常感謝您的幫助 – olo 2012-07-25 04:45:00

2

使用for或while循環。每次迭代時,將一個添加到計數器變量,或者如果您使用for循環,它將自行完成。

繼承人一些僞代碼:

var output 

for count 1 to 10: 

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

next for 
5

是否確定你 - 你可以用

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

去,它會匹配所有arel開始example_

否則 - 使用精細過濾它:

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

.filter()的回調明確檢查是否有一個1..10 a壓腳提升強調

8

您可以使用attribute starts with selector

a[rel^="example_"] 

這將選擇有rel屬性,以「example_」開頭的所有a元素。如果你想選擇所有匹配該模式的元素,我會推薦這個循環。

+0

謝謝你,但不適用Fancybox – olo 2012-07-25 04:43:42

+0

它的工作原理,對不起我的壞。非常感謝你 – olo 2012-07-25 04:45:51

1

你可以選擇所有以「example_」開始使用此選擇的元素:

$('a[rel^=example_]) 
0

您可以生成一個字符串被用作查詢:

var query = []; 
for(var i=1;i<=10;i++) 
    query.push('a[rel=example_' + i + ']'); 
$(query.join(',')).fancybox({});