首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多下拉式点击问题

多下拉式点击问题
EN

Stack Overflow用户
提问于 2014-04-20 04:25:35
回答 1查看 194关注 0票数 0

我有一个backbone.js应用程序,看起来像:http://jsfiddle.net/TD9Wj/

如果我使用Dropit.js的默认代码,一切都可以正常工作。但我正试着让代码在点击触发器时关闭。因此,当您单击“菜单”时,下拉菜单应该会关闭。

所以我使用了对代码的拉请求更新(https://github.com/gilbitron/Dropit/pull/5/files)

它改变了:

代码语言:javascript
复制
if($(this).parents(settings.triggerParentEl).hasClass('dropit-open')) return false;

至:

代码语言:javascript
复制
if($(this).parents(settings.triggerParentEl).hasClass('dropit-open')) {
   $('.dropit-open').removeClass('dropit-open').find('.dropit-submenu').hide();
   return false;
}

这允许我点击“菜单”触发器和下拉菜单将关闭。不幸的是,当我这样做,如果我有多个StoreProductViews打开,只有第一个添加的将有DropIt菜单的功能。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-20 06:21:10

基本上,您的问题是由多个事件绑定引起的。换句话说,每次呈现StoreProductView实例时,都会将.dropit()方法应用于页面上的所有.menu项。

考虑在代码中进行以下更改:

  1. $('.menu').dropit(); (第71行)更改为this.$('.menu').dropit();this.$el.find('.menu').dropit(); (应该是相同的,只是语法不同)。这将使视图查找它包含的.menu元素,而不是查看整个文档。
  2. 以上的更改是不够的,因为所有StoreProductView的元素都是相同的,所以下面的内容也是必要的。而不是使用: var storeProductView = new StoreProductView({ el: $('#widgets') }); 试着做这样的事情: var storeProductView = new StoreProductView(); $('#widgets').append(storeProductView.$el);

希望它有帮助,请询问是否有什么不清楚。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23178431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档