【发布时间】:2010-09-15 14:33:48
【问题描述】:
我正在使用 jQuery 编写一个相当基本的脚本。但是,脚本的行为会有所不同,具体取决于我是在本地 Web 服务器 (localhost) 上还是在生产服务器上运行它。
在开发中,以下代码返回我期望的 HTML:
$('#objID').siblings('.mAddress').html();
在生产中,同样的语句返回undefined。
两台机器上的文档结构相同。我能找到的唯一区别是当我使用 Firebug 单步执行脚本时。在开发机器上,将手表放在 $('#objID').siblings('.mAddress') 上会产生 [ span#object ],而在生产机器上,同样的手表会产生 [ [ span#object ] ]
(注意双组方括号)。
有什么想法吗?
添加:
我已经验证这两个库是相同的。
我使用 Firebug 做了更多的试验。脚本的另一部分使用以下语句抓取一组元素:
$('.ParentColumn2').each(function(i) { ... })
在该函数的主体内,如果我在 this 上设置了手表,则在开发中 this 的值是我所期望的:div.ParentColumn2,但在生产中 this 的值返回看起来像一个数组:[ div.ParentColumn2, div.ParentColumn2, div.ParentColumn2, .....]
HTML 基本上是一个表格(我已经删除了不相关的 HTML,并且行重复):
<table>
<tr>
<td>
<div class="ItemTemplate">
<div class="ParentColumn2">
<div><span id="dnn_ctr45874_ViewProjectGrid_GridView1_ctl02_lbl_Address" class="lbl_Address mAddress">111 W Wacker Dr, </span><span id="dnn_ctr45874_ViewProjectGrid_GridView1_ctl02_lbl_City" class="lbl_Address mCity">Chicago</span> <span id="dnn_ctr45874_ViewProjectGrid_GridView1_ctl02_lbl_PostalCode" class="lbl_Address mPostalCode">60601</span> <a href="javascript:MapMe(this);" id="dnn_ctr45874_ViewProjectGrid_GridView1_ctl02_hypMap" class="hypMap">Map</a> <span id="dnn_ctr45874_ViewProjectGrid_GridView1_ctl02_lbl_Area" class="mArea">Loop</span><span id="dnn_ctr45874_ViewProjectGrid_GridView1_ctl02_lt" class="mLt">41.8868010285473</span><span id="dnn_ctr45874_ViewProjectGrid_GridView1_ctl02_lg" class="mLg">-87.6312860701286</span>
</div>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="ItemTemplate">
<div class="ParentColumn2">
<div><span id="dnn_ctr45874_ViewProjectGrid_GridView1_ctl03_lbl_Address" class="lbl_Address mAddress">...</span> ...
</div>
</div>
</div>
</td>
</tr>
</table>
鉴于 HTML 都是由 .Net 生成的(不要让我开始),两台机器之间的 HTML 尽可能相同。
【问题讨论】:
-
您能与我们分享您拥有的 HTML 示例吗?
-
两台机器上的 HTML 代码是否完全相同?您的生产环境是否通过 AJAX 注入其他 HTML?
-
这是托管在 DNN 中的东西吗?如果是这样,您的开发机器是否包含与同一页面上的生产机器完全相同的模块?
标签: jquery