无法让closest()
和find()
工作:
<script type="text/javascript">
$('a.favorites_save') .live('click', function(e) {
thisObj = this;
e.preventDefault();
var link = $(this).attr('href')
alert(link)
$.get(link, function() {
$(thisObj).find('a.favorites_delete:first').show();
$(thisObj).hide();
});
return false;
});
$('a.favorites_delete') .live('click', function(e) {
thisObj = this;
e.preventDefault();
var link = $(this).attr('href')
$.get(link, function(data) {
$(thisObj).closest('a.favorites_save:first').show();
$(thisObj).hide();
});
return false;
});
</script>
HTML
<ul class="action-buttons">
<li><a href="#link" class="portfolio">Add to portfolio</a></li>
<span class="favorites_status"></span>
<li><a class="favourites favorites_save" style="display:none;" href="/_web_includes/faves/reference/569">Add to Favourites</a></li>
<li class="current"><a class="favourites favorites_delete" href="/_web_includes/faves/reference/569/delete">Remove Favourite</a></li>
当我按删除收藏夹时,它隐藏了一个链接,但show()
不起作用,与find()
方法相同。 HTML源代码中重复的HTML代码无法全部实现。
答案 0 :(得分:2)
因为您的链接位于<li>
内,所以'.find()'和'.closest()'都不会看到它们。这两个人只在树的同一个分支上下工作......
您需要执行.closest('action-buttons').find('favorites_delete')
之类的操作才能让它发挥作用......
答案 1 :(得分:2)
您正在引用$(this)对象中的.find()和.closest()。 .closest()只会找到这个对象的父级,而.find()会找到这个对象的子级。如果你想要一个全局选择,就这样做......
$("a.favorites_save:first")
这是删除...
$("a.favorites_delete:first")
答案 2 :(得分:0)
解决方案是那样的
$(thisObj).closest("ul").find('favorites_delete');
只需要在树上更高