我正在使用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>&nbsp;<span id="dnn_ctr45874_ViewProjectGrid_GridView1_ctl02_lbl_PostalCode" class="lbl_Address mPostalCode">60601</span>&nbsp;<a href="javascript:MapMe(this);" id="dnn_ctr45874_ViewProjectGrid_GridView1_ctl02_hypMap" class="hypMap">Map</a>&nbsp;&nbsp;<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>


鉴于它们都是由.Net生成的,因此两台机器之间的HTML尽可能地相同(不要让我开始)。

最佳答案

考虑到您的行为不同,可以合理地假设两个页面之间存在差异,因此我的建议是将两个页面都减少到最小程度,以保持当前行为,然后看看有什么不同。

关于jquery - 开发中的有效jQuery在生产中失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/175847/

10-10 16:03