2011-06-15 37 views
3

我在頁面上有五個鏈接,點擊時頁面的另一部分會顯示不同的內容。每個鏈接都有一個ID,我在文檔上有一個簡單的點擊功能,可以選擇第一個鏈接:JQuery:單擊文檔準備中的隨機鏈接

$('#link1')。click();

如何在文檔準備好的情況下隨意點擊五個鏈接中的一個,而不是#link1?是的,我意識到點擊功能可能不是處理這個問題的理想方式。

在此先感謝!

回答

7

的處事smoov jQuery的方式:

jQuery.jQueryRandom = 0; 
jQuery.extend(jQuery.expr[":"], { 
    random: function(a, i, m, r) { 
    if (i == 0) { 
     jQuery.jQueryRandom = Math.floor(Math.random() * r.length); 
    }; 
    return i == jQuery.jQueryRandom; 
} }); 

<script type="text/javascript"> 
$().ready(function() { 
    alert($("a:random").click()); 
}); 
</script> 

(我知道自定義選擇,但仍無恥地從here被盜)

略少於smoov:

$(function() { 
    var links = $('a'); 
    var randomNum = Math.floor(Math.random()*links.length) 
    links.get(randomNumber).click(); 
} 

如果你想要一個以鏈接開頭的ID的鏈接,你可以隨時做:

var links = $("a[id^='link']"); 

現在不管你使用數字還是其他什麼都沒關係。任何具有以鏈接開頭的ID。 (當然,你可以把它應用到一個特定的CSS類太)

+0

+1 – Locksfree 2011-06-15 23:30:49

+0

+1我在嘴裏吐了一下,然後我暈了過去。真棒。 – jmbucknall 2011-06-15 23:34:20

+0

這是完美的!非常感謝你,感謝所有回答的人。 – fast 2011-06-16 18:42:08

2

這樣的事情?

var randomnumber=Math.floor(Math.random()*5) 
$($('a').get(randomnumber)).click(); 
+2

更好地使用'.eq()':'$('a')。eq(randomnumber).click();' – 2011-06-15 23:33:06

1

假設興趣開始的,隨後用一個號碼「鏈接」的鏈接:

$('a[id="link' + Math.floor(Math.random() * 5) + '"]')[0].click(); 
0

我認爲這將是

links = new Array(); 
$('a').each(function() { links.push($(this)) }); 
el = links[Math.floor(Math.random()*links.length)] 
el.click(); 

抓取頁面上的所有鏈接並將它們放入數組中,然後單擊其中一個鏈接。

+1

沒有必要先將它們放入數組中。 – 2011-06-15 23:33:44

+0

我分手了,所以他可以看到過程,而不是複製和粘貼代碼。 – 2011-06-15 23:36:45

0

另一個可能的黑客攻擊:

$('a[href^="link"]').sort(function(){return Math.random()-0.5}).eq(0).click() 

上面的代碼將洗牌的鏈接,並返回第一個。 然後你可以觸發返回元素的'點擊'