Я использую toggle() для элемента. Когда пользователь нажал ссылку на контент, снижайтесь и нажмите снова, чтобы контент скользнул вверх.
Я использую этот код для переключения:
var LastItem = Backbone.View.extend({
el: '#item-div',
render: function(){
var itemListObj = this;
items.fetch({
success: function(){
var itemTemplate = _.template($('#item-list-template').html(), {items: items.models, item_meta: items.meta});
itemListObj.$el.html(itemTemplate);
$('#img-loading-item').css('display', 'none');
}
});
},
events: {
'click .feed-item' : 'itemSlideDown',
'click #load-more' : 'loadMoreItem'
},
itemSlideDown: function(e){
var tog = 0;
var itemId = $(e.currentTarget).attr('id');
$('#itemview-'+itemId).toggle(function() {
alert('a');
},
function(){
alert('b');
});
},
loadMoreItem: function(e){
var moreLink = $(e.currentTarget);
var nextUrl = moreLink.data('url');
moreLink.remove();
var appendItems = new AppendItemView();
appendItems.render({url: nextUrl});
}
});
Я получаю только b on alert().
Как я могу это исправить?
Попробуйте это (без переключения):
itemSlideDown: function(e){
var tog = 0;
var itemId = $(e.currentTarget).attr('id');
var $item = $('#itemview-'+itemId);
if($item.hasClass("show")){
alert("show!");
//behavior to show effect
$item.addClass("hide").removeClass("show");
}else if($item.hasClass("hide")){
alert("hide!");
//behavior to hide effect
$item.addClass("show").removeClass("hide");
}else{
alert("show!");
//your default behavior if class isn't any (Show for me)
$item.addClass("hide");
}
},
Я надеюсь, что это может помочь (извините 4 мой плохой английский!).