2010-09-01 17 views
32

JQuery'de rastgele bir öğeyi $(.class).random.click() gibi bir şey yaparak nasıl geri döndürebilirim?Jquery'de rasgele öğe nasıl alınır?

Yani, .class 10 bağa sahipse, rasgele birini tıklatın. İşte

ne yaptım:

var rand_num = Math.floor(Math.random()*$('.member_name_and_thumb_list a').size()); 
$(".member_name_and_thumb_list a").eq(rand_num).click(); 
+0

düzenli jquery seçici ile tüm unsurları kapmak olabilir, $ ('. Sınıf), sonra yerine .each kullanarak içlerinden yineleme arasında, rasgele birini yakala. veya tüm sınıfların bir dizisini oluşturabilir, daha sonra rasgele bir dizin oluşturabilir (dizinin aralığına göre). daha sonra $ ('. randomclass') 'a tıklayın. – RPM1984

cevap

33
var random = Math.floor(Math.random()*10); 
$(".someClass").eq(random).click(); 
+2

Krom hakkında çıkar: 'TypeError: Object # 'Round'' yöntemine sahip değil, var random = Math.round (Math.random() * 10);' – Mike

+10

Math.round yerine eşit dağılım için Math.floor. Bu durumda Math.round kullanmak, filtre uzantısı için 1 ile 8 arasında 0 ve 9 – tremby

9
var rand = Math.floor(Math.random()*10); 

$('.class').eq(rand).click(); 

Math.random() yüzden size alır bunu 10 ile çarpılarak ve aşağı yuvarlama, size 0 ile 1 arasında bir sözde rasgele sayı alır 0 ile 9 arasındaki .eq() olduğunu 0 endeksli, bu yüzden size sahip olduğunuz 10'dan rastgele bir jQuery öğesi elde edeceksiniz.

+0

Büyük akıllar hem düşünür mü? – Marko

+0

@Marko Görünüşe göre, evet;) –

52

Sen özel bir filtre (taken from here) yazabilirsiniz:

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; 
    } 
}); 

Örnek kullanımını:

​jQuery.fn.random = function() { 
    var randomIndex = Math.floor(Math.random() * this.length); 
    return jQuery(this[randomIndex]); 
}; 

:

$('.class:random').click() 

aynı şeyi yerine bir eklenti olarak Örnek kullanım:

$('.class').random().click() 
+2

+1 lehine olacaktır. – prodigitalson

+0

bana "Türlenmemiş TypeError" özelliğini verir: jQuery 1.11.3 ile özellik undefined öğesinin uzunluğunu okuyamazsınız 1.11.3 – cwd

35

Eğer elemanların sayısı, bu işleri seçmek zordur koduna istemiyorsanız: ben o .eq() ve .trigger() kullanarak jQuery şekilde yapıyor öneririm

things = $('.class'); 
$(things[Math.floor(Math.random()*things.length)]).click() 
+1

Bu, tek bir seçiciden daha fazlası olmayan verimli ve bağımsız bir yanıttır. –

+0

Buraya geldiğimde ikinci kez. Neden daha fazlasını kazanamıyoruz? –

2

.

$elements.eq(Math.floor(Math.random() * $elements.length)).trigger('click'); 
0

Sen eq()

örnek feryat bkz jquery yöntemiyle sınıf adına göre tesadüfi öğeyi seçebilir.

var len = $(".class").length 
var random = Math.floor(Math.random() * len) + 1; 
$(".class").eq(random).click(); 
İlgili konular