我会尽力解释。对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;
});
});
现在这几乎完全正常,除非我必须在点击“添加”链接后刷新页面,以便生成正确的删除链接。
我需要的行为类型基本上是在点击链接后刷新部分,使所有内容都注册,就好像页面已经刷新一样。
这有意义吗?希望如此!谢谢!
答案 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。谢谢你的帮助。