开发时的有效jQuery在生产时失败
我正在使用jQuery编写一个相当基本的脚本。但是,根据我是在本地Web服务器localhost上运行脚本还是在生产服务器上运行脚本,脚本的行为会有所不同 在开发时,以下代码返回我期望的HTML:开发时的有效jQuery在生产时失败,jquery,Jquery,我正在使用jQuery编写一个相当基本的脚本。但是,根据我是在本地Web服务器localhost上运行脚本还是在生产服务器上运行脚本,脚本的行为会有所不同 在开发时,以下代码返回我期望的HTML: $('#objID').siblings('.mAddress').html(); 在生产中,同一语句返回未定义的 两台机器上的文档结构相同。我能找到的唯一区别是当我使用Firebug逐步完成脚本时。在开发计算机上,将手表放在$'objID'.sides'.mAddress'上会生成[spanobj
$('#objID').siblings('.mAddress').html();
在生产中,同一语句返回未定义的
两台机器上的文档结构相同。我能找到的唯一区别是当我使用Firebug逐步完成脚本时。在开发计算机上,将手表放在$'objID'.sides'.mAddress'上会生成[spanobject],而在生产计算机上,相同的手表会生成[[spanobject]]
请注意两组方括号
有什么想法吗
增加:
我已经验证了这两个库是相同的 我用Firebug做了更多的实验。脚本的另一部分使用以下语句获取一组元素:
$('.ParentColumn2').each(function(i) { ... })
在该函数体中,如果我对此进行监视,在开发时,它的值就是我所期望的:div.ParentColumn2,但在生产时,它的值返回类似于数组的值:[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生成的。请不要让我开始。我不经常使用jQuery,但我的第一个怀疑是您的库不同步。我不经常使用jQuery,但我的第一个怀疑是您的库不同步。考虑到您有不同的行为,可以合理地假设这两个页面之间存在差异,因此我的建议是将这两个页面减少到保持当前行为的最小值,然后看看有什么不同。鉴于您有不同的行为,可以合理地假设这两个页面之间存在差异,因此,我的建议是将这两个页面减少到保持当前行为的最小值,然后看看有什么不同。我不使用。兄弟姐妹。。。或者不需要 根据jquery文档。。。。下面div上的兄弟姐妹不会返回任何东西,但是在p的其中一个上,$'p:first'将返回另一个
<div><p></p><p></p></div>
或
或
似乎奇怪的是,它将工作的开发,但不生产。。。但是试试看
-布鲁斯我不使用。兄弟姐妹。。。或者不需要 根据jquery文档。。。。下面div上的兄弟姐妹不会返回任何东西,但是在p的其中一个上,$'p:first'将返回另一个
<div><p></p><p></p></div>
或
或
似乎奇怪的是,它将工作的开发,但不生产。。。但是试试看
-bruce我想说,缓存是需要关注的几个方面,在您的开发环境中,每个请求都可能会重新加载所有内容,请尝试在javascript include标记的末尾添加?asdfasfrandom,以确保所有内容都得到更新 如果不是这样的话,当您提供javascript文件时,它们是否会被合并?例如,在Rails中,默认行为是将它们全部放入一个文件中,这可能会造成混乱 如果不是这样,那么可能是由于下载时间的原因,服务器上的javascript文件以不同的顺序加载,或者以不同于本地的顺序执行。在执行代码之前,请尝试确保dom已准备就绪
基本上,假设您使用的是同一个浏览器,并且具有相同的HTML,那么代码可能没有问题,但事情发生的顺序有问题。我想说的是,缓存是需要关注的几个方面,在您的开发环境中,每一个请求都可能会重新加载所有内容,尝试在javascript include标记的末尾添加?asdfasfrandom,以确保所有内容都得到更新 如果不是这样的话,当您提供javascript文件时,它们是否会被合并?例如,在Rails中,默认行为是将它们全部放入一个文件中,这可能会造成混乱 如果不是这样,那么可能是由于下载时间的原因,服务器上的javascript文件以不同的顺序加载,或者以不同于本地的顺序执行。在执行代码之前,请尝试确保dom已准备就绪
基本上,假设您使用的是相同的浏览器,并且具有相同的HTML,那么代码可能没有问题,但事情发生的顺序有问题。将相同的数据放在dev中,就像放在prod中一样,然后转储这两个浏览器的视图源代码,并进行差异处理 为什么要使用兄弟属性,而不仅仅是:
$('#objID .mAddress').html();
另外,我认为兄弟姐妹和上面两个都返回一个项目数组,而不仅仅是一个项目,因此我可能会使用类似的方式:
$($('#objID .mAddress').get(0)).html();
只返回第一项的html。在dev中放入与prod中相同的数据, 然后为两者转储视图源,并进行差异处理 为什么要使用兄弟属性,而不仅仅是:
$('#objID .mAddress').html();
另外,我认为兄弟姐妹和上面两个都返回一个项目数组,而不仅仅是一个项目,因此我可能会使用类似的方式:
$($('#objID .mAddress').get(0)).html();
仅返回第一项的html。您的代码是否在$document.readyfunction{…}中 如果不是,这可能会导致不同的行为。在本地开发机器上,可能所有东西都加载得很快,以至于DOM树按调用Javascript的类型完成,但在生产服务器上,可能还没有完成
但是没有解释FireBug中显示的额外嵌套括号。您的代码是否在$document.readyfunction{…};中 如果不是,这可能会导致不同的行为。在本地开发机器上,可能所有东西都加载得很快,以至于DOM树按调用Javascript的类型完成,但在生产服务器上,可能还没有完成
没有解释FireBug中出现的额外嵌套括号。我已经验证了这两个库是相同的。我已经验证了这两个库是相同的。你能和我们分享一下你得到的HTML示例吗?这两台机器上的HTML代码完全相同吗?您的生产环境是否通过AJAX注入其他HTML?这是DNN中托管的内容吗?如果是这样的话,那么您的开发机器是否包含与同一页面上的生产机器完全相同的模块?您能否与我们分享您获得的HTML示例?两台机器上的HTML代码是否完全相同?您的生产环境是否通过AJAX注入其他HTML?这是DNN中托管的内容吗?如果是这样的话,您的开发机器是否包含与同一页面上的生产机器完全相同的模块?我还建议使用.findI还建议使用.find