【问题标题】:jQuery '.each' and attaching '.click' eventjQuery '.each' 并附加 '.click' 事件
【发布时间】:2013-09-28 18:15:40
【问题描述】:

我不是程序员,但我喜欢构建原型。我所有的经验都来自于 actionScript2。

这是我的问题。为了简化我的代码,我想弄清楚如何将“.click”事件附加到 HTML 正文中已经存在的 div。

<body>
<div id="dog-selected">dog</div>
<div id="cat-selected">cat</div>
<div id="mouse-selected">mouse</div>

<div class="dog"><img></div>
<div class="cat"><img></div>
<div class="mouse"><img></div>
</body>

我的(失败的)策略是:
1)创建一个对象数组:

var props = {
"dog": "false",
"cat": "true",
"mouse": "false"
};  

2) 使用 '.each' 遍历数组,并使用 '.click' 事件扩充每个现有 div。最后,构造一个局部变量。

这是一个原型:

$.each(props, function(key, value) {    
$('#'+key+'-selected').click(function(){
var key = value;  
});
});

【问题讨论】:

  • this 你在找什么?
  • 这似乎可行,有什么问题? jsfiddle.net/PV7Gj
  • 您的代码已经完成了它所编码的一切。你真的想对 click 事件中的 key 变量做点什么吗?

标签: jquery each


【解决方案1】:

您可以使用的一种解决方案是将更通用的类分配给您希望单击事件处理程序绑定到的任何 div。

例如:

HTML:

<body>
<div id="dog" class="selected" data-selected="false">dog</div>
<div id="cat" class="selected" data-selected="true">cat</div>
<div id="mouse" class="selected" data-selected="false">mouse</div>

<div class="dog"><img/></div>
<div class="cat"><img/></div>
<div class="mouse"><img/></div>
</body>

JS:

$( ".selected" ).each(function(index) {
    $(this).on("click", function(){
        // For the boolean value
        var boolKey = $(this).data('selected');
        // For the mammal value
        var mammalKey = $(this).attr('id'); 
    });
});

【讨论】:

  • 有趣的是你能在 div 中包含变量吗?那是有效的HTML吗?感谢所有输入的人!在编写这个原型和帖子的过程中,我似乎已经解决了这个问题。确实,它的麦汁很好!但感谢大家的贡献!
  • 这些不是变量,而是属性。 id 和 class 非常标准,但您可以将 data-{name} 附加到元素并使用 $(this).data('{name}'); 访问内容这是有效的 html5。
【解决方案2】:

无需使用.each。 click 已经绑定到所有 div 事件。

$('div').click(function(e) {
    ..    
});

See Demo

注意:使用硬绑定(例如.click)来确保动态加载的元素不会被绑定。

【讨论】:

  • 是的,但是当您在每个条目上都有一个按钮时,这对存档不起作用。
  • @Oriol 是对的,另一种方法是使用on() jQuery 函数。这样它就可以处理动态加载的内容。
  • 这个解释帮助很大,谢谢。
猜你喜欢
  • 2010-10-09
  • 1970-01-01
  • 2012-12-13
  • 2012-05-14
  • 2011-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-18
相关资源
最近更新 更多