2

我有一个来自我学校数据库的车牌号码列表,我已经将它放入一个带有coldfusion的列表并以html显示。看起来像这样...漂亮,不是吗?

在通过冷融合将数据导入列表之前,我在数据库中的数据中进行硬编码并获得结果。但是,这是一个相当长的列表,因此硬编码其中的所有值并不是一个好的选择,尤其是如果将来要扩展此列表。所以,我刚刚制作了另一个 CF 文件来处理将它们全部放入列表中。该文件如下所示:

setPlates.cfm

<cfquery name="q_sample" datasource="cars_live">
  SELECT LICENSE FROM veh_rec 
</cfquery>

<cfloop query="q_sample" >
        <li><a href='#Student'><cfoutput>#q_sample.license#</cfoutput></a></li>
</cfloop>

这是我将它们放入列表的方式:

<div class="ui-grid-solo">
            <div class="ui-block-a"><br></div>
            <div class="ui-block-a"><ul id="plates" data-role="listview" data-inset="true" data-filter="true" data-filter-reveal="true" data-filter-placeholder="Filter Students">
    <script type="text/javascript">
    $.get("setPlates.cfm")
        .done(function(data) {
          $("#plates").html(data);
        });
        </script>
        <div id="plates"></div>
    </ul></div>
</div><!-- /grid solo -->

但是,现在我用于输出所有学生数据的算法不再起作用了。我唯一的猜测是,在另一个文件中创建 li 元素的方式与我在同一个文件中创建它们时的方式不同。有没有办法让 li 的文本被点击,即使它们不是在同一个文件中创建的?下面是我使用硬编码值的点击算法和 CF 文件。

<script type="text/javascript">
    $("#plates li").click(function() {
        alert("hi");
        var strLicense=$(this).text();
        strLicense=$.trim(strLicense);

        $.get("joey.cfm", { license: strLicense})
        .done(function(data) {
          $("#myResults").html(data);
        });
    });    

和 joey.cfm:

<cfparam name="License" default="">

<cfquery name="q_sample" datasource="cars_live">
  SELECT * FROM veh_rec WHERE LICENSE=<cfqueryparam cfsqltype="cf_sql_varchar" value="#trim(urldecode(License))#">
</cfquery>

<cfif q_sample.recordcount eq 0> 
No Results found for <cfoutput>"#License#"</cfoutput> 
</cfif>

<cfoutput query="q_sample" >
  <p>License Plate Number: #license# <br><br> Permit ID Number: #decal#<br><br> Student ID Number: #ID#</p>
</cfoutput>

先感谢您!

4

1 回答 1

2

不久前我不得不问一个类似的问题。您面临的问题是您在创建函数时尝试与 DOM 中不存在的对象进行交互。您想使用 jQuery.on()将事件附加到新创建的对象。额外提示,在 jQuery 1.7 中.on()被替换。.live()因此,如果您获得了任何免费代码 usinglive()或有人告诉您改用live()useon()

<script type="text/javascript">
    $("#plates").on("click","li",function() {
        var strLicense=$(this).text();
        strLicense=$.trim(strLicense);
     });
</script>   
于 2013-06-04T11:28:23.003 回答