jQuery,在HTML模板中查找控件

时间:2010-07-19 03:35:39

标签: jquery

我正在使用html模板:

<script id="locationTemplate" type="application/template" >

    <p>
        <input id="searchText" type="text" />
        <input id="searchlocation" type="submit" value="Search" />
    </p>

    <p>
        <label>Location Name</label>
        <input id="locationName" type="text" />
    </p>


    <div id="map"></div>

</script>

我可以加载模板,但是当我尝试在模板中找到控件时,我不能。

    this.template = $('#locationTemplate');
    this.searchText = $(this.template.html()).find('input#searchText');
    this.locationName = this.template.find('p input#locationName');

我在这里缺少什么?我尝试了两种不同的方法。

更新

我得到了这段代码:

    this.template = $('#locationTemplate');
    this.searchText = $(this.template.html()).find('input#searchText');
    this.locationName = $(this.template.html()).find('input#locationName');

但我很困惑为什么我必须将html转储到另一个jQuery实例中。为什么我不能只使用template.find方法,因为模板已经包装在jQuery中......

2 个答案:

答案 0 :(得分:5)

您无法将模板放入&lt; script&gt;标签。它会阻止解析器解析内部的东西,因此它不会显示在DOM中,因此选择器将不会在它上面工作。

答案 1 :(得分:1)

我刚刚遇到这个。获取对象的唯一方法是首先选择模板外部存在的DOM项并深入其中。因此,对于附加在现有UL内部的列表项的模板,我可以这样做:

//Click Handler for the Line Items 
$("#current-list").delegate("li", "click", function() {
    var id = $(this).children(".line-item").children(".command-button-item").attr("id");
    alert(id); //this alerts a correct value
    alert($(id).attr("id")); //this alerts undefined? when selecting by id
});