JQuery select 在 <script></script> 元素上

JQuery select on <script></script> elements

我在 html.twig 页面中使用了以下脚本:

<script type="text/javascript" src="{{asset('/jquery-ui-1.11.2/external/jquery/jquery.js')}}"></script>
<script type="text/javascript" src="{{asset('/jquery-ui-1.11.2/jquery-ui.min.js')}}"></script>
<script type="text/javascript" src="{{asset('/js/jeoquery.js')}}"></script>

<script type="text/html" id="my_prototype"> 
 <div class="form-horizontal">
            <div class="form-group">
                           // my first textarea
            </div>
            <div class="form-group">
                           // my second textarea     
            </div>
            <div class="form-group">
                           // my first input
                   <label for="my_date">Date</label>
                   <input type="text" id="my_date" name="my_datename" maxlength="10" class="form-control" />
            </div>    
</div>
</script>

我的问题是:如何在 jquery 中 select "my_date" ?我写了这个,但它不起作用:

$('#my_date').datepicker();

感谢您的帮助,

我猜您将这些标签放在脚本标签之间是因为您将其用作模板。
应用 jquery-ui 日期选择器适用于实际的 dom 元素。
因此,您需要先应用模板并生成 "real" 元素,然后应用日期选择器。

编辑:观察 id 会发生什么,当您生成多个表单时,您不应该多次使用相同的 id。如果它被转换成 "my_date_1"、"my_date_2" 之类的东西,也许你最好使用专用的 class 来识别日期选择器输入而不是 id。

你能用 jQuery 对象而不是原型做同样的事情吗?

例如:(我删除了 id 属性,这样你就可以拥有多个)

var $proto = $('<div class="form-horizontal">
    <div class="form-group">
        // my first textarea
    </div>
    <div class="form-group">
        // my second textarea     
    </div>
    <div class="form-group">
       // my first input
       <label>Date</label>
       <input type="text" class="date_field" name="my_datename" maxlength="10" class="form-control" />
    </div>    
</div>");

这为您提供了一个 DOM 结构,您可以在需要的地方插入。

此外,您还可以使用

$proto.find('.date_field').datepicker();

...或者您可能必须先插入它,然后再调用日期选择器扩展。