2013-06-22 79 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

相关问题