11

也许你们可以帮助我解决这个问题,过去 30 分钟我一直在努力解决这个问题。

假设我有四个具有相同类的元素。

<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

有什么建议么?非常感谢!!

4

4 回答 4

4

听起来好像是在单击其中一个元素时进行了 ajax 调用,但是您需要根据单击的元素在 ajax 调用中传递不同的值。您可以执行以下操作,而不是使用“onclick”属性:

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 变量设置属性的值。

于 2013-06-22T18:50:28.597 回答
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");
     }
   });
});
于 2013-06-22T18:45:39.213 回答
1
 $('.test').click(function(){
   clicked = $(this);
 });

上面的代码返回单个项目的数组。所以使用索引 0 来选择它,如下所示:

$('.test').click(function(){
  clicked = $(this)[0];
});
于 2018-05-06T14:08:30.980 回答
0

难道不能给每个人一个ID,以便您可以直接访问它们吗?

如果您在回调函数上触发它们,您可以在变量中创建对单击的 div 的引用吗?

IE

 var clicked;

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

然后在您的 ajax 响应中:

 clicked.toggleClass("btn-danger btn-success");
于 2013-06-22T18:46:26.847 回答