2

ユーザーがリンクをクリックすると ajax リクエストが行われ、リクエストが行われた場合、リンクをクリックできなくなる機能があります。

これを達成するために私が使用しているものは次のとおりです。

$('a[id^="rsvp_"]').click (function (e) {
    e.preventDefault();
    $.post(
        $(this).data('url'),
        function(data) {
            $(this).replaceWith(function(){
                alert (data);
                return $("<span>" + data + "</span>");
            });
        }
    );
})  ;

このコードは、 で始まるすべての ID に適用されますrsvp_。すべてが機能しているように見えますalert(data)が、アンカー タグはまだそこに残っています。アンカータグを別のものに置き換えたいだけです。

HTML スニペットは次のようになります

<a id="rsvp_${event.id}" href="#" data-url="${createLink(action: 'myaction', params: ["eventid": event, "userid": user])}">Click to RSVP</a>

アップデート

ページにこのようなリンクが複数あることに注意してください。rsvp_1, rsvp_2, rsvp_3 ..etc

ユーザーがクリックしたリンクのアンカー タグを削除したいだけです。ページ上のすべてのリンクではありません

4

4 に答える 4

2

これを試して:

$('a[id^="rsvp_"]').click(function (e) {
    e.preventDefault();
    $.ajax($(this).data('url'), {
        method: 'POST',
        context: this
    }).done(function(data) {
        $(this).replaceWith("<span>" + data + "</span>");
    });
});
于 2013-02-26T13:56:40.753 に答える
1

これを試して

$(e.target).replaceWith(function(){
        return $("<span>" + $(this).html() + "</span>");
    });
于 2013-02-26T13:49:00.213 に答える
1

jquery .one メソッドを使用して同じことを実現できます。これにより、選択した各要素が 1 回だけクリック可能になります。

このような状況では、可能であれば、すべてのアンカー タグをデフォルトで p または spans に個人的に変更し、次のように選択した要素にクリックを 1 回適用します。

$('p[id^="rsvp_"]').one ("click", function (e) {
    e.preventDefault();
    $.post(
        $(this).data('url'),
        function(data) {
            $(this).replaceWith(function(){
                alert (data);
                return $("<span>" + data + "</span>");
            });
        }
    );
});

詳細はこちら

于 2013-02-26T13:56:50.550 に答える
0
$("a").removeAttr("href");

アンカーのhrefを削除する方がよい..または

  $(this).replaceWith(function(){
      return $("<span>" + $(this).html() + "</span>");
  });
于 2013-02-26T13:46:25.437 に答える