在foreach循环中引用全局jquery函数变量

时间:2013-05-01 10:45:06

标签: javascript jquery asp.net-mvc razor foreach

每次有新的模型项时,我想在foreach循环中更改全局jquery变量的值。我想在日历中添加新日期但不能这样做,直到我可以从foreach循环访问这些函数。

*编辑***

我简化了我对vov v正确回答的问题的例子。实际代码将比添加一个值做更多的事情,因为它会将数据添加到日历中。我添加了更多代码来展示它会做得更好一些

jquery的:

<div id="calendar" style="width: 500px;" />
<script type="text/javascript">

    $(document).ready(function () {

        var calendar = $('#calendar').glDatePicker(
        {
            showAlways: true,
            borderSize: 0,
            dowOffset: 1,
            selectableDOW: [1, 2, 3, 4, 5],
            selectableYears: [2012, 2013, 2014, 2015],
            specialDates: [
                {
                    date: new Date(2013, 0, 8),
                    data: { message: 'Meeting every day 8 of the month' },
                    repeatMonth: true
                },
                {
                    date: new Date(2013, 5, 7),
                    data: { message: 'Meeting every day 8 of the month' }
                },
            ],
            onClick: function (target, cell, date, data) {
                target.val(date.getFullYear() + ' - ' +
                            date.getMonth() + ' - ' +
                            date.getDate());

                if (data != null) {
                    alert(data.message + '\n' + date);
                }
            }
        }).glDatePicker(true);

        $('#visible').change(function () {
            var showAlways = eval($(this).val());
            calendar.options.showAlways = showAlways;

            if (!showAlways) {
                calendar.hide();
            }
            else {
                calendar.show();
            }
        });

    });
       var value = 0;

        $('#total').click(function () {
            alert(value);
        });


        function add() {

        // will eventually add new specialDates to the calendar taken from model items

        //test lines                
        //value = value + 1;
            //return value;
        }

</script>

剃刀观点:

<input type="button" id="total"  />

@foreach (var item in Model){
    if (item.AppointmentStatus == "active")
{   
    // item display code

    @: <script type="text/javascript"> add();</script> 
}

if (item.AppointmentStatus == "history")
{
        // item display code
}

}

我运行此操作并在下面收到错误,因为它没有看到其他代码

'0x800a1391 - JavaScript运行时错误:'add'未定义'

2 个答案:

答案 0 :(得分:1)

如果您只想捕获要发送给客户的“计数”,那么您可以这样做:

<script>
    var value = '@Model.Count';
    // the rest of you script goes here
    $(document).ready(function () {
        $('#total').click(function () { 
            alert(value);
        }
    });
</script>

所以说你的模型中有7个项目,那么将生成的html就是:

var value = 7;

当您点击total元素时,它会向您发送包含文字7的提醒。

答案 1 :(得分:0)

尝试在doc ready之外移动add函数和变量声明。在你的剃刀执行之前,doc就绪的功能无法使用。