jQuery replaceWith()$ this

时间:2016-07-29 21:09:29

标签: javascript jquery

我需要隐藏"显示回复"当我点击显示它们。问题是,当我点击"显示回复"所有"显示回复"按钮隐藏。我只需要隐藏我点击的那个。这是jQuery代码:

select id from `jsontest` where JSON_SEARCH(`foo`, 'all','bar') is not null;

4 个答案:

答案 0 :(得分:0)

$(".replies_show")选择具有该类的所有元素,因此您选择所有这些元素,然后再次将replaceWith应用于所有元素。但是,该回调函数中的this是指刚刚单击的元素(即唯一被点击的元素,而不是所有这些元素)。

此外,请勿使用replaceWith功能隐藏元素,而是使用.hide()

所以,替换

$(".replies_show").replaceWith(" ");

使用

$(this).hide();

答案 1 :(得分:0)

您可以使用this获取当前元素。否则,您将选择.replies_show类的所有元素。



$('.replies_show').on('click', function(e, el) {
  $(el).replaceWith(' '); // Does what you're looking for

  $(el).hide(); // Might be better, depending on what you're doing
  
  $(this).next('.replies').show();
  
  e.preventDefault();
});




答案 2 :(得分:0)

使用.hide()功能而非.replaceWith()

$(".replies_show").click (function(e){
            $(this).hide();
            $(this).next(".replies").show();
            e.preventDefault();
        });

答案 3 :(得分:0)

由于您只需要定位clicked项,因此您需要在回调函数中使用$(this),如下所示:

$(".replies_show").click (function(e){
    var $this = $(this);   // cache $(this)/clicked element

    $this.hide();          // clicked item will be hide (display: none) 
    $this.next(".replies") // next matched item of clicked item
        .show();           

    e.preventDefault();
});