JQuery:文档准备就绪时点击随机链接

3

我在页面上有五个链接,当其中一个被点击时,另一个部分的内容会显示不同的内容。每个链接都有一个ID,并且我有一个简单的点击函数在文档准备好时选择第一个链接:

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

如何让它在文档准备好时随机点击其中一个五个链接,而不是特定的#link1?是的,我意识到点击函数可能不是处理这个问题的理想方式。

提前感谢!

5个回答

8

用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>

我知道自定义选择器,但还是从这里无耻地盗用了。

稍微不那么流畅:

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

如果您想要带有以link开头的ID的链接,您可以始终执行以下操作:
   var links = $("a[id^='link']");

现在,无论您使用数字还是其他内容都没有关系。任何以link开头的ID(当然,您也可以将其应用于特定的CSS类)。

+1 我有点反胃,然后我晕了。太棒了。 - jmbucknall
太完美了!非常感谢你,也感谢其他所有回答的人。 - fast

2

something like this?

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

2
最好使用 .eq(): $('a').eq(randomnumber).click(); - Felix Kling

1
假设感兴趣的链接以“link”开头,后跟一个数字:
$('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
不需要先将它们放入数组中。 - Felix Kling
我将代码拆分开来,这样他就能看到整个过程,而不是仅仅复制粘贴代码。 - citizen conn

0

另一个可能的黑客攻击:

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

以上代码将打乱链接顺序,并返回第一个链接。然后您可以触发返回元素的'click'事件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接