CFDiv里面的Jquery

时间:2014-04-05 11:49:09

标签: coldfusion

我有一个页面,其中包含显示其他文件内容的CFDiv标记。

 <cfajaximport tags="cfwindow,cfform,cflayout-tab,cfdiv">
 <cfoutput><cfdiv class="vehicle-log" bind="url:trip_tab.cfm?ticketid=#ticketnum#" ID="theDiv"  bindOnLoad = "true"/></cfoutput>

外部文件有jquery选项卡和jquery datepicker。没有一个jquery似乎在CFDiv中起作用。如果我自己调用外部页面,一切正常。

我在这里使用CFDiv的原因(我知道大多数人讨厌布局的东西)是因为外部页面有一个表单元素我可以提交并添加到数据到数据库而不刷新整个父页面。这是我知道如何做到这一点的唯一方法。

无论如何,有没有人知道如何让我的jquery元素在CFDiv中工作?

感谢。 布赖恩

2 个答案:

答案 0 :(得分:2)

你在这里遇到了不止一个问题。首先,您正在使用<CFDiv>,它涵盖了使用非常旧版本的ExtJS的部分内容。因此,混合使用ExtJS和jQuery(以及jQuery插件)可能会让您感到头疼。

其次,由于<CFDiv bind="...">使用AJAX加载外部HTML窗口内容,因此您需要更改JavaScript策略。 <CFDiv>不会从外部页面(trip_tab.cfm)引入并执行JavaScript代码(包括jQuery),除非您只在该外部页面中使用CF UI小部件(然后<cfajaximport>标记处理该内容为了你)。它只加载HTML DOM内容。您必须将任何<script><link rel="stylesheet">标记以及自定义JavaScript / jQuery代码和CSS移动到父页面(其中包含<CFDiv>标记的页面)。然后,您必须找到一种方法来监听AJAX事件(完成加载外部页面)并调用自定义JavaScript / jQuery代码。

正如其他人在上述评论中所建议的那样,使用<CFDiv>只会让事情变得更难。如果您切换到使用一个JavaScript库作为UI组件(如jQuery / jQueryUI / jQuery插件),并将所有必要的代码放入主页面,那么您可以非常轻松地完成所需的操作。

答案 1 :(得分:-1)

我发现了一个简单的工作...... CFdiv创建了一个感觉就像一个单独的浏览器窗口,但它实际上并不是一个。所以它无法通过以下方式提取Javascript文件:

<script type="text/javascript" src="/js/scripts/jquery-1.11.1.min.js"></script>

以上是告诉浏览器&#34;去取这个文件&#34; - 但由于你的CFdiv实际上不是一个浏览器(这是一个有争议的CFajax排列,如这里所述),它并没有这样做。

从技术上讲,上面的内容使浏览器将其包含在页面中,就好像你将其包含在内,或者只是将Javascript粘贴在那里。

所以将上面的内容转换为:

<script type="text/javascript"><cfinclude template="/js/scripts/jquery-1.11.1.min.js"></script>

并包含javascript将工作! (如果没有与cfajax等人的任何冲突)

我遇到了类似的问题,因为我的jquery无法正常工作,并且正在修复它。