使用 jquery 单击另一个 link 更新 link

Updating a link on clicking another link using jquery

我是 JQuery 的新手。当我单击第一个 link 时,它会向服务器发送 Ajax 请求并返回一些数据。到目前为止一切都很好。在回调中,我想更改第二个 link 的显示文本。例如 - 6 人喜欢它。我搜索了很多但无法正常工作。

<div class="container" id="some-id">
    <a class="someclass-1">Like</a>
    <a class="someClass-2">5 people liked it</a>
</div>

我尝试过更改第二个 link 的文本。但我无法更改文本。我的问题是我如何 select 并更改第二个 link.

的文本
$(this).closest('div').find('.someClass-2').html('6 people liked it');

我的 Ajax 代码是这样的:

$(".someClass-1").click(function(e) {
      if ($(this).html() == "Like") {
          var parameters = { statusId: $(this).closest('div').attr('some-id')};
          $.get(
              "/like",
              parameters,
              function(data) { 
               $(this).closest('div').find('.someClass-2').html( data + ' people liked it.');
              }
          );
      }

页面上还有很多 link 的 class someClass-2,但我不想打扰他们。我只想更改 someClass-2 link 在当前 div.

中的文本

改变这个

$(this).closest('div').find('.someClass-2').html('6 people liked it');`

至此

$(this).parent().children("a.someClass-2").text("new text");

也许是这样的?

$('.someClass-2').html('6 people liked it');

...但我不清楚将该行放在代码中的什么位置。

为什么要使用 $(this)?如果您有唯一标识符,请使用它。

$(".someClass-2").text("6 people liked it");

当然,把它放在 Ajax success 函数中。

编辑:

var dataNumber;

$(".someClass-1").click(function(e) {
  myElement = $(this);
      if ($(this).html() == "Like") {
          var parameters = { statusId: $(this).closest('div').attr('some-id')};
          $.get(
              "/like",
              parameters,
              function(data) { 
               myElement.siblings('.someClass-2').html( data + ' people liked it.');
              }
          );
      }

.siblings() 用于 select 所有兄弟姐妹,而不是通过 class 或 .next() 过滤它,如果你只需要 select 下一个兄弟姐妹。

此外,请注意你把 this select 或...放在 Ajax 调用中,而不是 click() 函数中,正因为如此它改变了它的价值。

使用next()

$(this).next('.someClass-2').html('6 people liked it');

with ajax 用当前元素创建一个变量:

$(".someClass-1").click(function(e) {
      var el =  $(this);///see here
      if ($(this).html() == "Like") {
          var parameters = { statusId: $(this).closest('div').attr('some-id')};
          $.get(
              "/like",
              parameters,
              function(data) { 
              el.next('.someClass-2').html( data + ' people liked it.');//if you use $(this) i will refer to the ajax object
              }
          );
      }

或:

 $(".someClass-1").click(function(e) {
          var el =  $(this);///see here
          if ($(this).html() == "Like") {
              var parameters = { statusId: $(this).closest('div').attr('some-id')};
              $.get(
                  "/like",
                  parameters,
                  function(data) { 
                  el.parent().find('.someClass-2').html( data + ' people liked it.');//if you use $(this) i will refer to the ajax object
                  }
              );
          }

我想这会对你有所帮助

$('#some-id .someClass-2').text('6 people liked it');

它将替换#some-id 中所有 someclass-2 的 html。