jQuery代码在我附加的HTML中不起作用

时间:2018-09-18 02:56:47

标签: jquery html append

单击按钮时,我有这个附加的文本框,但是jquery中的.datepicker代码不起作用,但是在普通文本框中,它可以工作。

.datepicker如何在Jquery中工作?这是示例jsfiddle。 http://jsfiddle.net/fqjvLxn1/14/

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>jQuery UI Datepicker - Default functionality</title>
  <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
  <link rel="stylesheet" href="/resources/demos/style.css">
  <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
  <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
  <script>
  $( function() {
    $( ".datepicker" ).datepicker();

    $("#btn1").click(function(){
        $("p").append("<input type='text' class='asd datepicker'>");
    });
  } );


  </script>
</head>
<body>


<button id="btn1">Append text</button>
<p>(.datepicker wont work here when I clicked a Button) </p>
<input type='text' class='asd2 datepicker'>(But works here)

</body>
</html>

2 个答案:

答案 0 :(得分:1)

您应该再次调用datepicker函数。 因为您要在一次文档准备中致电。页面加载后立即执行此片段。因此,您的动态日期选择器尚不存在。您需要在每个新插入的元素上调用$(YourElementSelector).datepicker()

  $( function() {
    $( ".datepicker" ).datepicker();

    $("#btn1").click(function(){
        $("p").append("<input type='text' class='asd datepicker'>");
        $( ".datepicker" ).datepicker();
    });
  } );

答案 1 :(得分:0)

首先,将您的jQuery代码移到body的末尾。初始页面加载后jQuery不了解新元素/附加元素,因此您将不得不使用document来搜索这些元素。查看此代码段

<!doctype html>
<html lang="en">

<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>jQuery UI Datepicker - Default functionality</title>
  <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
  <link rel="stylesheet" href="/resources/demos/style.css">
  <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
  <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
</head>

<body>

  <button id="btn1">Append text</button>
  <p>(.datepicker wont work here when I clicked a Button) </p>
  <input type='text' class='asd2 datepicker'>(But works here)

  <script>
    $(function() {
      $(".datepicker").datepicker();
      $("#btn1").click(function() {
        $("p").append("<input type='text' class='asd datepicker' id='show'>");
      });
      $(document).on("focus", ".asd", function() {
        $(this).datepicker();
      });
    });
  </script>


</body>

</html>