jQuery each()函数不循环遍历元素

时间:2015-07-23 17:37:01

标签: javascript jquery

jQuery.each()函数没有循环遍历按钮。

调试器在函数调用的第一行停止,但它没有 执行 函数

代码来自bootstrap-calendar

app.js包含以下each()函数:

$('.btn-group button[data-calendar-nav]').each(function() {
    var $this = $(this);
    $this.click(function() {
        calendar.navigate($this.data('calendar-nav'));
    });
});

$('.btn-group button[data-calendar-view]').each(function() {
    var $this = $(this);
    $this.click(function() {
        calendar.view($this.data('calendar-view'));
    });
}); 

HTML divs和按钮:

<div class="container">
    <div class="pull-right form-inline">
        <div class="btn-group">
            <button class="btn btn-primary" data-calendar-nav="prev"><< Prev</button>
            <button class="btn" data-calendar-nav="today">Today</button>
        </div>
        <div class="btn-group">
            <button class="btn btn-warning" data-calendar-view="year">Year</button>
            <button class="btn btn-warning active" data-calendar-view="month">Month</button>
        </div>
    </div>
</div>  

初始化脚本:

<script type="text/javascript">
    var calendar = $('#calendar').calendar({
    events_source: [
        {
            "id": 293,
            "title": "Event 1",
            "url": "http://example.com",
            "class": "event-important",
            "start": 1437507900000, // Milliseconds 
            "end":   1437508639654 // Milliseconds
        }
    ],
    tmpl_path: "tmpls/"

    });
</script>

*更新*

找到解决方案。问题是app.js(包含jQuery each()函数)是在头部声明的,但它需要在HTML和脚本之后声明才能正常工作。

订单错误:

  • app.js
  • HTML
  • 脚本

良好的秩序:

  • HTML
  • 脚本
  • app.js

1 个答案:

答案 0 :(得分:1)

你的选择器还可以。

如果我做了

$('.btn-group button[data-calendar-nav]').each(function(index) {
  var $this = $(this);
  console.log($this.data('calendar-nav'));
});

我得到了

prev
today
next

所以你的问题在于使用calendar.navigate

如果我用firebug调试它,我得到TypeError: calendar.navigate is not a function。 所以函数可能不知道你的变量calendar