0

我有一个很奇怪的行为。我在运行时附加了一个类,但该类没有被应用(尽管我可以通过 firebug 调试看到它在那里)。这是一个完全(非)功能的示例:

<html>
    <head>
        <link rel='stylesheet' href='./jQuery/css/superfish/superfish.css' type='text/css' />
        <link rel='Stylesheet' href='./jQuery/css/smoothness/jquery-ui-1.8.16.custom.css' type='text/css' />
        <script type='text/javascript' src='./jQuery/js/jquery-1.6.2.min.js'></script>
        <script type='text/javascript' src='./jQuery/js/jquery-ui-1.8.16.custom.min.js'></script>
        <script type='text/javascript' src='./jQuery/js/jquery.ui.datepicker-de.js'></script>
        <script type='text/javascript' src='./jQuery/js/jquery-ui-timepicker.js'></script>
        <script type='text/javascript' src='./jQuery/js/jquery-ui-timepicker-de.js'></script>
        <script type='text/javascript'>
            $(function () {
                $('.DateTimePicker').datetimepicker({
                    stepMinute: 15
                });
            });
        </script>  
    </head>
    <body>
        <script type='text/javascript'>
            function testMe() {
                $("[id$=Working]").addClass('DateTimePicker');
            }
        </script>
        <input id="notWorking" type="text">
        <input id="clickToTest" type="button" onclick="testMe()">
        <input id="static" type="text" class="DateTimePicker">
    </body>
</html>
4

2 回答 2

1

当您单击<input type="submit" />正在添加的类时,然后正在执行重新加载页面的 POST 并且该类在新加载时不应该存在。

尝试将其更改为<input type="button" />,它应该可以工作。

于 2012-10-08T13:36:40.900 回答
1

我认为您遇到的问题是datetimepicker()使用 class 初始化所有元素.dateTimePicker,但是当您动态地将类添加到其他元素datetimepicker时,这些元素不会再次初始化。这是我以前看到用来解决这个问题的一段代码。

$(document).ready(function(){

  $('.DateTimePicker').on('click', function(){
     $(this).datetimepicker({
         stepMinute : 15
     }).datetimepicker('show');
  });

});

这意味着 datetimepicker 在使用 附加后直接调用.on()。更多信息在这里。这样,.DateTimePicker即使它们是动态添加的,也会在所有具有该类的元素上初始化 datetimepicker。希望这可以帮助。

更新:

如果您不喜欢这种方法,我还看到了其他几种方法。一种巧妙的做法是在这里

另一种方法是删除 datetimepicker 添加到元素的类(因此它知道哪些元素已在其上初始化了 datetimepicker),然后再次将 datetimepicker 重新绑定到您的类。

function testMe() {                           
   $("[id$=Working]").addClass('DateTimePicker');
   $('.DateTimePicker').removeClass('hasDatepicker').datetimepicker({ stepMinute: 15 });
}  
于 2012-10-09T09:05:12.297 回答