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

jQuery each() function not looping through elements

本文关键字:循环 遍历 元素 函数 each jQuery      更新时间:2023-09-26

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'));
    });
}); 

HTMLdiv和按钮:

<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>

* UPDATE *

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

错误的顺序:

  • app.js
  • 脚本

良好:

  • 脚本
  • app.js

您的选择器是正确的。

如果我输入

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

i get

prev
today
next

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

如果我用firebug调试它,我得到TypeError: calendar.navigate is not a function。所以也许你的变量calendar对函数来说是未知的