1

最初に申し訳ありませんが、私は大きな初心者で実験しているだけです.oembedでFacebookのような同様の壁を作りました。

そして、いいねボタンと嫌いボタンも追加したいと思います。

私はいいねボタンから始めました。それは機能し、いいね、いいね、いいね、いいね、いいね、いいね、いいね、いいね、いいね、いいね、いいね!

私の問題はajax呼び出しであるため、実際にいいねボタンをクリックすると、すべてのアンカーhref valが上書きされ、どのクリックでもなくすべてにクラスが追加されます。

ここに私のコードがあります

jquery

var cookieLike = "like_"
$('a.like').each(function(){
    var id = $(this).attr('href'), cookieLiked = cookieLike + id;

    switch($.cookies.get(cookieLiked) ) {
        case "unliked":
            $(this).removeClass('btn-success');
        break;
        case "liked":
            $(this).addClass('btn-success');
        break;
    }
}).on('click', function(e){
    e.preventDefault()
    var likeId = $(this).attr('href');
    $.ajax({
        url: "<?php echo base_url(); ?>stream/like/" + likeId ,
        type: "post",
        data: likeId,
        dataType: "json",
        success: function(like)
        {

            if(like.likeStatus == "unliked") {
                $('a.like').attr('href', likeId).removeClass('btn-success');
                $.cookies.set(cookieLike + likeId, 'unliked');

            }else if(like.likeStatus == "liked") {
                $('a.like').attr('href', likeId).addClass('btn-success');
                $.cookies.set(cookieLike + likeId, 'liked');

            }

        }
    });

});

html

<div class="stream-bottom">
    <a href="#" class=" btn btn-mini comment">Komment</a>
    <div class="pull-right like-options">
        <a href="<?php echo $sp->sid; ?>" class=" btn btn-mini like"><i class="icon-thumbs-up" title="tetszik"></i> </a>
        <a href="<?php echo $sp->sid; ?>" class=" btn btn-mini dislike"><i class="icon-thumbs-down" title="nem tetszik"></i></a>
    </div>
</div>

誰かが私が欠けているものを指摘してもらえますか?

4

3 に答える 3

4

ターゲット要素 (クリックされたリンク) をバインドし、成功のコールバックで参照します

.on('click') コールバックで

var $link = $(this);

成功のコールバックで使用

$(this).attr('href', likeId)

それ以外の

$('a.like').attr('href', likeId)
于 2012-07-29T11:40:21.917 に答える
4

多分:

.on('click', function (e) {
    e.preventDefault();

    var button = $(this);
    var likeId = button.attr('href');

    $.ajax({
        url: "<?php echo base_url(); ?>stream/like/" + likeId,
        type: "post",
        data: likeId,
        dataType: "json",

        success: function (like) {
            if (like.likeStatus == "unliked") {
                button.removeClass('btn-success');
                $.cookies.set(cookieLike + likeId, 'unliked');
            } else if (like.likeStatus == "liked") {
                button.addClass('btn-success');
                $.cookies.set(cookieLike + likeId, 'liked');
            }

        }
    });
});
于 2012-07-29T11:42:53.440 に答える
0

クラス名として「like」を使用して、アンカータグまたはアンカータグのセット全体を使用$("a")または$("a.like")参照している場合。クリックしたアンカー タグを具体的に使用するには、$(this) 変数を使用します。

これにより、イベントが生成された要素と、この場合はクリックしたアンカー タグが得られます。

于 2012-07-29T11:46:46.420 に答える