jquery切换替代方案,无法理解这里发生了什么

时间:2012-02-14 13:19:26

标签: jquery ajax smarty

对你们来说这似乎很容易,但我在jquery和ajax中有点新鲜。我到处寻找,几个小时都无法解决问题。我的问题如下;

我有一个带有类名的html链接,请按照

<a href="#" class="follow">  {if $is_following == 0} follow {else} following {/if}  </a>

if-else语句只是一个聪明的模板引擎用法。这很简单。如果用户关注其他用户,则显示“关注”值,否则显示“关注”值。

我的jquery如下;

var $values;
$('.follow').mouseover(
    function()
    {
        $values = $(this).html();
        if($values == 'following')
        {
            $(this).html('unfollow');
        }
    }
);

$('.follow').mouseout(

    function()
    {
        $(this).html($values);
    }
);

$('.follow').toggle(

    function(){
        $(this).html('following');
        $values = "following";
    },
    function(){
        $(this).html('follow');
        $values = "follow";     
    }
);

//follow ajax call    
$('.follow').click(function(){

    var $op = $(this).html();
    var $other_profile_id = $('#other_profile_id').text();

    if($op == 'follow')
    {                   
        $.ajax({
            type : 'POST',
            url : 'ajax_service.php',
            dataType : 'json', 
            data: {
                op : $op,
                other_profile_id : $other_profile_id
            },          
            success : function(data){               

            },
            error:function (error){
                console.error(error.responseText);
            }                                   
        });                 
    }
    else if($op == 'unfollow')
    {               
        $.ajax({
            type : 'POST',
            url : 'ajax_service.php',
            dataType : 'json',
            data: {
                op : $op,
                other_profile_id : $('#other_profile_id').text()            
            },
            success : function(data){
            },
            error:function (error){
                console.error(error.responseText);
            }   
        });
    }
});

编辑:根据答案,我需要解释功能;

  • 如果未关注用户,则链接会显示“关注”值。
  • 如果用户已经关注,则显示“follow”值,当鼠标悬停在链接上时,它应触发mouseover事件。
  • 如果鼠标位于链接上且值为“follow”,则链接值应为“unfollow”。
  • 如果鼠标在链接上,则应再次显示“跟随”值。
  • 如果未关注用户,则会在链接上显示“关注”值。

我不想使用切换事件。因为切换只是捕获第一次和第二次点击。我需要一个if语句来控制链接值是跟随还是跟随。

此外,如果用户关注,则显示以下值但鼠标悬停事件不起作用。你能解释一下为什么吗?我无法理解这里发生了什么。

任何建议或帮助将不胜感激。

P.S:如果我删除toggle事件并控制ajax调用中的链接值,它根本不起作用。

此外,我正在考虑为链接分配不同的链接ID并单独处理它们。但是,我认为这是错误的方式。

1 个答案:

答案 0 :(得分:1)

在某些地方,你有以下形式的陈述:

$(this).html();

OR

$(this).html('sometext'); 

如果您将这些更改为:

$(this).text(); 

$(this).text('newtext'); 

这可以解决您的问题吗?

注意:'newtext'将是您希望在该标记内保存的任何文本。

编辑注2:我知道这不是你的所有问题,但也许你可以更清楚地解释你想要的功能。

请参阅此小提琴以确定您是否正在寻找:http://jsfiddle.net/MarkSchultheiss/Swp7x/

注意:它使用jsonp和跨域,只使用回显的返回值,但您可以根据需要使ajax部分正常工作。我在一个字段中直观地显示当前状态的值,以帮助您理解其工作原理。