2013-06-22 121 views
8

也許你們可以幫我解決這個問題,在過去的30分鐘裏我一直在努力。Jquery在同一類名稱的一組元素中選擇單擊的元素

比方說,我有四個元素具有相同的類。

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

如何選擇被點擊的那個?

我能得到像這樣的工作:

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

不過,我需要它來火而不被點擊了一個Ajax調用後的成功,所以我需要能夠做這樣的事(失敗嘗試):

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

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

有什麼建議嗎?非常感謝!!

+0

你如何確定哪個鏈接應該觸發事件? – lonesomeday

+0

我有一個類似的問題,我通過var self = this解決了。也許它可以幫助你。 – sonoftunk

+0

你怎麼知道你需要在ajax之後點擊哪個元素?或者是ajax調用綁定到click事件,如果是這樣,使得它更容易 – KyleK

回答

2

這聽起來像Ajax調用時被點擊的元素之一製成,但是你需要通過在不同的值ajax調用取決於哪個元素被點擊。但不是用一個 「點擊」 屬性,你可以做到以下幾點:

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:

$('.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"); 
     } 
    }); 
}); 

當然,你會使用設置data-屬性的值PHP變量。

+0

這對我有用。唯一的原因是我不能使用這個之前的方法是我不知道如何將變量傳遞給我的ajax函數,如下所述:)非常感謝我修復了我的代碼! – user2278120

1

使用觸發功能....

所以附上點擊處理...

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

然後在你的ajax成功函數....觸發點擊...

$('.test').trigger('click'); 

但是確定哪一個觸發將是訣竅。

你怎麼知道哪一個點擊,基於ajax?

如果你只是在做一個Ajax調用的時候,基於該鏈接,您依序按上那麼解決的辦法是要簡單得多.......因爲你已經知道被點擊哪個鏈接

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

這似乎很有希望,我打算玩這個,謝謝! – user2278120

+0

不幸的是,這個解決方案不適用於我,因爲我不能用$('。test')觸發ajax調用。click(function(){我必須用onclick方法調用它,因爲我傳入動態php變量作爲ajax函數的參數 – user2278120

+0

你可以發表一個你的意思的例子嗎? – KyleK

0

是它不可能給每個這些ID,所以你可以直接訪問它們?

如果你在回調函數中觸發它們,你可以創建一個對被點擊的div的引用嗎?

var clicked; 

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

然後在你的Ajax響應:

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

這對我不起作用,因爲ajax調用是在div的onclick觸發的。我必須使用onclick,因爲它傳遞了正在循環的php數組。 – user2278120

相關問題