我有一个带有数据属性的元素列表,如下所示:
<div class="first-div" data-month="march"></div>
<div class="first-div" data-month="june"></div>
现在我想获取所有data-month属性并为其添加一个点击监听器。代码现在看起来像这样:
$('[data-month]').forEach(function(month) {
$('[data-month="' + month + '"]').bind('click', function() {
// Do something
});
});
然而,这不起作用。似乎无法使用month元素。有谁知道如何让它发挥作用?
它是否适用于所有浏览器?
答案 0 :(得分:1)
您的month
变量将成为jquery对象。您需要提取月份的字符串值。
但据我所知,这似乎并非必要。您可以直接将事件侦听器分配给each
尝试做:
$('[data-month]').each(function(i, monthEl) {
$(monthEl).bind('click', function() {
// If you need to get the month value, you can use jQuery's .data()
var monthString = $(monthEl).data('month');
});
});
答案 1 :(得分:1)
您应该将.forEach
更改为.each
,而月份参数将是div
元素,而不是字符串。
$('[data-month]').each(function(month) {
$('[data-month="' + month.getAttribute('data-month') + '"]').bind('click', function() {
alert(month);
});
});