Javascript 主干:在某些事件上切换方法
我想要一个按钮来切换主干中的两种方法,但我有问题。总的来说,我对JS还很陌生 如果单击按钮:Javascript 主干:在某些事件上切换方法,javascript,jquery,backbone.js,Javascript,Jquery,Backbone.js,我想要一个按钮来切换主干中的两种方法,但我有问题。总的来说,我对JS还很陌生 如果单击按钮: 我想展示一个隐藏的div 更改所单击按钮的文本 然后,如果再次单击该按钮(该按钮包含新文本并显示隐藏的div) 更改文本 隐藏显示的div 隐藏的第二种方法没有被激发?我想知道这是否是因为.hide最初不在DOM中,因为它被添加到show方法中。只是一个猜测,也许有更好的方法在一个类上切换方法 这是我的JS 'touchstart .share-btn' : 'show', 'touchstar
- 我想展示一个隐藏的div
- 更改所单击按钮的文本
- 更改文本
- 隐藏显示的div
隐藏的第二种方法没有被激发?我想知道这是否是因为.hide最初不在DOM中,因为它被添加到show方法中。只是一个猜测,也许有更好的方法在一个类上切换方法 这是我的JS
'touchstart .share-btn' : 'show',
'touchstart .hide' : 'hide'
'show' : function (e) {
var view = this;
$(e.currentTarget).closest('.tile').find('.share-tools').fadeIn('fast');
$(e.currentTarget).addClass('hide');
if ($(e.currentTarget).hasClass('hide')){
$(e.currentTarget).find('.button-copy').closest('.button-copy').html('close');
}
},
'hide' : function (e) {
var view = this;
if($(e.currentTarget).hasClass('hide')) {
$('.share-tools').fadeOut('fast');
$(e.currentTarget).removeClass('hide');
$(e.currentTarget).find('.button-copy').closest('.button-copy').html('share');
}
},
尝试在事件侦听器中返回false,以防止在第一次单击时调用这两个方法。也许稍微修改一下代码会有所帮助。我是根据我认为你想要达到的目标而创作的 以下是相关的视图代码:
var View = Backbone.View.extend({
...
// Make it clear that these are the same element.
// Ensure they will not both fire by making them exclusive.
events: {
'mousedown .share-btn:not(.hide)' : 'show',
'mousedown .share-btn.hide' : 'hide'
},
'show' : function (e) {
console.log('show');
var $e = $(e.currentTarget);
$e.closest('.tile').find('.share-tools').fadeIn('fast', function () {
$e.addClass('hide');
});
$e.find('.button-copy').closest('.button-copy').html('close');
},
'hide' : function (e) {
console.log('hide');
var $e = $(e.currentTarget);
$e.closest('.tile').find('.share-tools').fadeOut('fast', function () {
$e.removeClass('hide');
});
$e.find('.button-copy').closest('.button-copy').html('share');
}
});
您可以在这里找到正在工作的JSFIDLE:我理解您的意图,但问题是什么?上面的代码是否引发错误,或者您是否没有看到所需的行为?未触发.hide的第二个方法?我想知道这是否是因为.hide最初不在DOM中,因为它被添加到show方法中。谢谢你的帮助!您可以看到,它正在将事件委托给视图的根元素,因此即使稍后添加了类,它也应该注册单击
.hide
。最初的问题是如何定义当前目标。但是现在这两种方法都是在第一次单击时调用的。也许最好重新开始。如果单击选择器,然后再次侦听第二次单击并执行不同的方法,那么显示元素的最佳方式是什么?基本上我只需要了解如何显示和隐藏的基础上点击一个按钮?谢谢所有的帮助!让我一天都很愉快谢谢你的鼓励:)很高兴我能帮忙。