0

「お気に入りに追加」というリンクがあります。デフォルトでは、このリンクをクリックしてログインすると、お気に入りが追加されたことを示す確認ページに移動します。ログインしていない場合は、ログイン画面が表示されます。

そのアイテムをお気に入りにすでに追加している場合は、テキストに「お気に入りから削除」と表示され、リンクが更新されて「?A=削除」が含まれます。クリックすると、お気に入りの削除を確認するページにリダイレクトされます。

今私がしたいのはこれです:

ログインしていない場合は、アラートメッセージが表示されます。

ログインしている場合-ページを更新します(ページを更新する代わりに、[お気に入りに追加]を[お気に入りに追加しました]に変更したいのですが、方法がわかりません)。

すでにお気に入りに追加している場合-ページを更新します(理想的には、ページを更新する代わりに、[お気に入りから削除]を[お気に入りが正常に削除されました]に変更したいのですが、方法がわかりません)。

{module_isloggedin}タグは、使用しているシステムによって生成されます。ログインしている場合は「1」を生成し、ログインしていない場合は「0」を生成します。

これまでのところ、発生するのはエラーメッセージだけです-おそらく私の:containsが機能していないためですか?

コード全体が長すぎてずさんなようです。まだ勉強してる :)

これはこれまでのところ私のjQueryですが、「お気に入りから削除」のページ更新はまだ行っていません。

/ **更新されたコードは機能しますが、少し醜いです:) ** /

jQuery('.add-favourites a').live('click', function(e){   
                    e.preventDefault();

        var loggedin = "{module_isloggedin}";

        if  (loggedin == 1) {
            var stringtocheckon = jQuery('.add-favourites a').html();

            if(stringtocheckon.indexOf('Add to Favorites')>=0) {
                $.ajax({
                        url: $(this).attr('href'),
                        data: { 'A': 'Add' },
                        cache: false,
                        success: function (data) {
                            document.location.reload(true);
                        }
                    });

            }else{
                if(jQuery(this).attr('href').indexOf("A=Remove") != -1){
                    jQuery.ajax({
                        url: jQuery(this).attr('href'),
                        cache: false,
                        success: function (data) {
                            document.location.reload(true);
                        }
                    });
                }else{
                    jQuery.ajax({
                        url: jQuery(this).attr('href')+"&A=Remove",
                        cache: false,
                        success: function (data) {
                            document.location.reload(true);
                        }
                    });
                }
    }
    }else{
        alert('You must be logged in to add favourites.');
    }
});
4

3 に答える 3

1
     $('.add-favourites a').on('click', function (e) {
                e.preventDefault();
                var obj = $(this);

                //var loggedin = "{module_isloggedin}";
                var loggedin = "1";

                if (loggedin == 1) {
                    if ($(this).hasClass('AddToFavourites')) {
                        $.ajax({
                            url: $(this).attr('href'),
                            data: { 'A': 'Add' },
                            cache: false,
                            success: function (data) {
                                obj.removeClass('AddToFavourites').addClass('RemoveFromFavourites').text('Favorite added successfully');
                            }
                        });
                    } else {
                        $.ajax({
                            url: $(this).attr('href'),
                            data: { 'A': 'Remove' },
                            cache: false,
                            success: function (data) {
                                obj.removeClass('RemoveFromFavourites').addClass('AddToFavourites').text('Add to favorites');
                            }
                        });
                    }
                } else {
                    alert('You must be logged in to add favorites.');
                }
            });


<a href="Your Url" class="AddToFavourites">Add to favorites</a>
<a href="Your Url" class="RemoveFromFavourites">Favorite added successfully</a>
于 2012-05-15T06:35:38.580 に答える
1

Jqueryライブラリでは、要素内から値(文字列、テキスト、またはその他のhtml)を取得するために、.html()または.text()を使用できます。

var stringtocheckon = $('.box-content ul li').html();

次に確認してください

if(stringtocheckon.indexOf('Add to Favorites')>=0) { }
于 2012-05-15T07:17:42.033 に答える
0

どういたしましてジャスティン、

あなたはコードが少し醜いと言います-整頓するために、ajaxビットを実行する関数を自分で作成してください...

function getmypageandreload(url,senddata) {
  $.ajax({
    url: url,
    data: { 'A': senddata },
    cache: false,
    success: function (data) {
    document.location.reload(true);
  }
}

 $(".yourelementclass").click(function() {

  var loggedin = "{module_isloggedin}";
  var url=$(this).attr('href');
  var senddata="";

   if (loggedin == 1) {
var stringtocheckon = $('.add-favourites a').html();
      if(stringtocheckon.indexOf('Add to Favorites')>=0) {
         senddata="Add";
      } else if($(this).attr('href').indexOf("A=Remove") != -1){    
         senddata = "Remove"; 
      }

    getmypageandreload(url,senddata);


    } else { alert('You must be logged in to add favourites.');  }
  });

 });

'ifelse'をさらに削減できるようです。ここでもデフォルトのsenddata="remove"を設定します。使用しているのは追加または削除のみのようです。

私は上記のコードを実行していませんが、要点を理解していただければ幸いです

ロブ

于 2012-05-15T18:32:34.523 に答える