【问题标题】:Javascript event in Chrome vs. SafariChrome 与 Safari 中的 Javascript 事件
【发布时间】:2013-04-17 13:54:38
【问题描述】:

我有一个如下所示的 HTML 元素:

<select class="indiv_unit" name="indiv_unit" id="indiv_unit">

我正在尝试在 Javascript/Backbone.js 视图中捕获选择事件(当用户做出选择时),如下所示:

events : {

    "click select.indiv_unit" : 'changeIndivUnit',
},

Safari 和 Firefox 浏览器能够捕获选择事件,但 Chrome 不能。我怀疑 Chrome 的问题在于我没有“真正”抓住选择,而是抓住了选择框中的点击。我试过这样的事情:

"select select.indiv_unit"

但这不起作用,而且看起来也不正确。有人能指出检测适用于所有浏览器的选择事件的正确方法吗?

【问题讨论】:

  • 捕捉“变化”事件不符合您的需求吗?
  • @Loamhoof,是的,我只需要知道它发生了变化。那会是什么样子? “改变 select.indiv.unit”?
  • 是的,我认为应该可以。我正在立即对其进行测试(因为我确定您无论如何都在这样做)。
  • @Loamhoof,你已经做到了。我很感激。如果您愿意,请提交“答案”,我会立即接受。我非常感谢你这么快回答。如果可以,请在回答时解释为什么“更改”有效而“点击”无效。 (我喜欢理解事物)再次感谢。

标签: javascript ruby-on-rails-3 backbone.js


【解决方案1】:

改成:

'change select.indiv_unit': 'changeIndivUnit'

您可以使用http://jsfiddle.net/T8Dsf/ 对其进行测试。

【讨论】:

  • 太棒了!非常感谢。任何解释——为什么“点击”没有这样做,但“改变”做到了——将不胜感激。感谢您非常迅速的回复。
  • @sploiber 我必须承认,如果你能重现这种行为,我很乐意寻找原因。如果我尝试在上面的 jsfiddle 中用click 替换change,它似乎工作得很好:o 好吧,至少你的问题已经解决了。
  • 我不确定为什么它在 Chrome 中不起作用。我怀疑我有很多关于不同浏览器功能的知识。我主要在 Safari 中工作,但 Chrome 和 Firefox 可以做非常不同的事情。我暂时将 IE 排除在外。再次感谢!
  • 作为最后一个“有点奇怪”的评论,Chrome 和 Safari 都是基于 Webkit 的浏览器,所以为一个而不是另一个工作真的很奇怪。好吧,直到 Chrome 开始使用 Blink。
猜你喜欢
  • 1970-01-01
  • 2010-12-06
  • 1970-01-01
  • 2011-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-03
  • 1970-01-01
相关资源
最近更新 更多