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

あなたが抱えている問題は、 がdatetimepicker()class を持つすべての要素に初期化されていることだと思い.dateTimePickerますが、クラスを他の要素に動的に追加するとdatetimepicker、これらの要素に対して が再度初期化されません。これは、この問題を回避するために以前に使用されたコードの一部です。

$(document).ready(function(){

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

});

これは、datetimepicker が を使用してアタッチされた直後に呼び出されることを意味し.on()ます。詳細はこちら.DateTimePickerこのようにして、動的に追加された場合でも、クラスを持つすべての要素で datetimepicker が初期化されます。お役に立てれば。

アップデート:

この方法が気に入らない場合は、他にもいくつかの方法があります。それを行うための1つのきちんとした方法はhereです。

もう 1 つの方法は、datetimepicker が要素に追加するクラスを削除して (どの要素に datetimepicker が初期化されているかを認識させるため)、datetimepicker をクラスに再度バインドすることです。

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

クリックする<input type="submit" />と、クラスが追加され、ページをリロードする POST が実行されます。クラスは新しいロードでは存在しないはずです。

に変更してみてください<input type="button" />。おそらく動作するはずです。

于 2012-10-08T13:36:40.900 に答える