2013-06-22 28 views
8

numaralı bir dizi öğe içinde tıklatılmış öğeyi seçebilir. Belki de bana bu konuda yardımcı olabilirsiniz, 30 dakika boyunca bununla mücadele ediyorum.JQuery aynı sınıf adı olan

Aynı sınıfta dört elementim olduğunu varsayalım.

<div class="test">hi</div> 
<div class="test">hey</div> 
<div class="test">yo</div> 
<div class="test">What's up</div> 

Tıklananı nasıl seçebilirim?

bunun böyle işe almak başardı:

$('.test').click(function() { 
    $(this).toggleClass("btn-danger btn-success"); 
}); 

Ancak, ben bir ajax çağrısından sonra başarı tıklama almadan ateş etmeye gerek, bu yüzden (böyle bir şey yapmak gerekiyor başarısız girişimler):

$('.test', this).toggleClass("btn-danger btn-success"); // This did not work 

$(this).find('.test').toggleClass("btn-danger btn-success"); // Also did not work 

Herhangi bir öneriniz var mı? Çok teşekkürler!!

$('.test').on('click', function() { 
    $(this).toggleClass("btn-danger btn-success"); 
}); 

Sonra ajax başarı işlevinde .... o tıklayarak tetikleyen

+0

Etkinliğin hangi bağlantıyı tetiklemesi gerektiğini nasıl belirlersiniz? – lonesomeday

+0

Daha önce “var self = this” ile çözdüğüm benzer bir problem yaşadım. Belki size yardımcı olabilir. – sonoftunk

+0

ajax'den sonra hangi öğeye tıklamanız gerektiğini nereden biliyorsunuz? Veya tıklama olayına bağlı ajax çağrısıdır, eğer öyleyse, bunu çok daha kolay hale getirir – KyleK

cevap

2

Bu unsurlarından biri tıklandığında yapılır ajax çağrısı gibi geliyor, ama sen farklı değerler geçmesi gerekiyor ajax çağrısı hangi öğeye tıklandığınıza bağlı olarak değişir.

HTML:

<div class="test" data-param1="value1a" data-param2="value2a">hi</div> 
<div class="test" data-param1="value1b" data-param2="value2b">hey</div> 
<div class="test" data-param1="value1c" data-param2="value2c">yo</div> 
<div class="test" data-param1="value1d" data-param2="value2d">What's up</div> 

JavaScript: Aksine bir "onclick" özelliğini kullanmak yerine, aşağıdaki yapabileceğini Tabii

$('.test').click(function() { 
    var $div = $(this); 
    $.ajax(url, { 
     data: { 
      param1: $div.attr('data-param1'), 
      param2: $div.attr('data-param2') 
     }, 
     success: function() { 
      $div.toggleClass("btn-danger btn-success"); 
     } 
    }); 
}); 

, kullandığınız data- niteliklerin değerlerini belirleyecek PHP değişkenleri.

+0

Bu benim için çalıştı. metodu daha önce burada tarif edildiği gibi ajax işlevine geçirme değişkenlerini bilmemdi. :) Çok teşekkürler şifremi çözdüm! – user2278120

1

tetik işlevini kullanın ....

Yani tıklama işleyicisi ekleyin ... ...

Ancak hangisinin tetikleneceğini belirlemek hiledir.

Ajax'e göre hangisini tıklayacağınızı nereden biliyorsunuz ???? Eğer cick Hangi bağlantıya dayalı

sadece bir ajax arama yapıyorsanız, o zaman çözüm zaten o

$('.test').click(function() { 
var link = $(this); 
$.ajax(url, { 
    success: function() { 
     link.toggleClass("btn-danger btn-success"); 
    } 
    }); 
}); 
+0

Bu umut verici görünüyor, ben bununla oynayacağım, teşekkürler! – user2278120

+0

Ne yazık ki, bu çözüm benim için çalışmaz çünkü ajax çağrısını $ ('.' Test ') ile tetikleyemiyorum. (Function() {Onclick yöntemiyle çağırmalıyım çünkü dinamik olarak geçiyorum ajax işlevi için parametre olarak php değişkenleri – user2278120

+0

Ne demek istediğinin bir örneğini gönderebilir misin? – KyleK

0

mi tıklandığı bağlantı biliyorum çünkü ....... çok daha kolaydır Bu kimliğin her birine vermek mümkün değil, böylece onlara doğrudan erişebilirsiniz?

Onları bir geri çağırma işlevinde tetikliyorsanız, bir değişkendeki tıklanan div için bir başvuru oluşturabilirsiniz?

yani

sizin ajax yanıtta sonra
var clicked; 

$('.test').click(function(){ 
    clicked = $(this); 
}); 

:

clicked.toggleClass("btn-danger btn-success"); 
+0

gerekir Bu benim için işe yaramaz çünkü ajax çağrısı div onclick üzerinde tetiklenir.Onclick kullanmanız gerekir çünkü onclick kullanmak zorundadır çünkü looped olan php dizi geçer – user2278120