如何使用jQuery动态添加id的datepicker

时间:2012-04-26 13:55:52

标签: jquery datepicker

我正在使用jQuery 1.4.4而且我一直试图通过id动态添加一个datepicker。这是代码:

$(function () {
    $('#ListTableBody').find('input[id^="PickDate."]').each(function () {
        alert(this.id);
        $(this.id).datepicker();
    });
});

我正在使用一个动态生成id的表。上面的代码找到了每个id,我使用警报验证了它。当我循环时,this.id显示我有正确的id和输入,但是datepicker由于某种原因不起作用?另外,我不会抛出任何错误。

我在这里做错了什么想法?

4 个答案:

答案 0 :(得分:3)

试试这个:

$('#ListTableBody').find('input[id^="PickDate."]').each(function() {                 
    $(this).datepicker();
});

无需获取id属性 - 您可以立即使this成为jQuery对象

答案 1 :(得分:1)

如果你想使用它,你需要做这样的事情:

$("#"+this.id).datepicker();

但这样做更容易:

$(this).datepicker();

答案 2 :(得分:1)

我会改用一个班级。 ID只能在每个文档中使用一次,而您将each()应用于ID选择器的事实表明您的页面上可能有多个实例。

相反,请选择一个描述性的类名,例如.datepicker。优点是你可以在你的页面上有多个,也可以用这样的表达式初始化日期选择器:

$(document).ready(function() {
    $('input.datepicker').datepicker();
});

如果您没有做任何其他事情,则无需each()循环。如果您想将datepickers限制在特定区域内的输入,例如#ListTableBody(我再次建议使用类名,以便您可以在页面上有多个,如果您愿意),那么只需更改选择器:

$(document).ready(function() {
    $('#ListTableBody').find('input.datepicker').datepicker();
});

答案 3 :(得分:0)

可以为每个需要用作日期选择器的控件设置相同的类。

    <script>
       $(function() {   
            $('.class').datepicker();
      });

    </script>