单击后jQuery刷新链接

时间:2012-03-22 00:19:04

标签: jquery

我会尽力解释。对jQuery来说很新,所以希望是有意义的。

我正在使用Expression Engine的收藏夹加载项,它允许我将条目标记为收藏夹或私人收藏夹。 (一个或另一个)所以我利用私人功能作为书签的意思。 您可以通过超链接将项目标记为收藏项,超链接在单击时将其注册,同样在删除时也是如此。

我正在显示这些链接,并在jQuery的帮助下显示/隐藏其他链接。

Heres是我目前的jQuery代码:

// favourites adding and removing
jQuery(function(jQuery) { // Shorthand for jQuery(document).ready(function($) {
  jQuery('a.mark').live('click', function() {
        var self = this;
        jQuery.get(self.href, {theID: self.id.substring(3)}, function(data) {
              jQuery(self).html('A Favorite').toggleClass('mark marked').
                    closest('li').prevAll('li:has(a.bookmarks)').hide(300);
        });
        return false;
  });
  jQuery('a.marked').live('mouseover', function() {
        jQuery(this).html('Remove Favourite');
  }).live('mouseout', function() {
        jQuery(this).html('A Favourite');
  }).live('click', function() {
        var self = this;
        jQuery.get(self.href, {theID: self.id.substring(3)}, function(data) {
              jQuery(self).html('Save as a Favourite').toggleClass('marked mark').
                    closest('li').prevAll('li:has(a.bookmarks)').show(300);
        });
        return false;
  });
});

// bookmarks adding and removing
jQuery(function(jQuery) { // Shorthand for jQuery(document).ready(function($) {
  jQuery('a.bookmarks').live('click', function() {
        var self = this;
        jQuery.get(self.href, {theID: self.id.substring(3)}, function(data) {
              jQuery(self).html('A Bookmark').toggleClass('bookmark bookmarks').
               closest('li').nextAll('li:has(a.mark)').hide(300); // Or .hide(300);
        });
        return false;
  });
  jQuery('a.bookmark').live('mouseover', function() {
        jQuery(this).html('Remove Bookmark');
  }).live('mouseout', function() {
        jQuery(this).html('A Bookmark');
  }).live('click', function() {
        var self = this;
        jQuery.get(self.href, {theID: self.id.substring(3)}, function(data) {
              jQuery(self).html('Save as a Bookmark').toggleClass('bookmark bookmarks').
                    closest('li').nextAll('li:has(a.mark)').show(300); // Or .hide(300);
        });
        return false;
  });
});

现在这几乎完全正常,除非我必须在点击“添加”链接后刷新页面,以便生成正确的删除链接。

我需要的行为类型基本上是在点击链接后刷新部分,使所有内容都注册,就好像页面已经刷新一样。

这有意义吗?希望如此!谢谢!

2 个答案:

答案 0 :(得分:0)

当我把它放在一个小提琴里时,一切似乎都很好:

http://jsfiddle.net/jtbowden/59e4p/1/

我更改了链接,以便在更新完成后更改为“删除收藏夹/书签”,因为鼠标输出时它将更改为“收藏夹/书签”。除此之外,似乎没问题。

我不完全确定隐藏/显示包含书签的其他li的行为。这是问题吗?

答案 1 :(得分:0)

正确的想到我完成了这个。终于搞定了!

它的主旨是......

为了更改href以及类,我必须手动为我的代码添加删除链接

// favourites adding and removing
jQuery(function (jQuery) {
jQuery('a.fav_me').live('click', function () {
    var self = this;
    jQuery.get(self.href, {
        theID: self.id.substring(3)
    }, function (data) {
        jQuery(self).html('A Favourite').toggleClass('fav_me fav_delete');
    });
    return false;
});
jQuery('a.fav_delete').live('mouseover', function () {
    var entryID = jQuery(this).attr("rel");
    jQuery(this).html('Remove Favourite').attr('href',     'http://domain.com/forms/favourite-add/' + entryID + '/delete/');
}).live('mouseout', function () {
    jQuery(this).html('A Favourite');
}).live('click', function () {
    var entryID = jQuery(this).attr("rel");
    var self = this;
    jQuery.get(self.href, {
        theID: self.id.substring(3)
    }, function (data) {
        jQuery(self).html('Save as a Favourite').toggleClass('fav_delete fav_me').attr('href', 'http://domain.com/forms/favourite-add/' + entryID);
    });
    return false;
});
});

然后我的模板看起来像这样......

{if not_saved}
                        <li><a class="fav_me" id="{entry_id}" href="{path=forms/favourite-add}/{entry_id}" rel="{entry_id}">Save as a Favourite</a></li>
                        {/if}<!--not saved-->
                        {if saved}
                        <li><a class="fav_delete" id="{entry_id}" href="{path=forms/favourite-add}/{entry_id}/delete/" rel="{entry_id}" >A Favourite</a></li>
                        {/if}

这就是我必须付出的才能让它发挥作用。我还决定不使用fav和书签,所以我没有必要显示或隐藏其他书签/ fav。谢谢你的帮助。