<script id="roleWeekRankData" type="text/html">
<$ for(var i = 0; i < data.length; i++) {$>
<tr class="<$if(data[i].rank <= 3) {$><$='tbl_top'$><$}$>" id="tr<$=data[i].accountid$>">
<td>
<div>
<span><$=data[i].rank$></span>
<a href="javascript:;" class="ico_btns add_ico ie6png"></a>
<a href="javascript:;" class="ico_btns del_ico ie6png" <$=initDelStyle(data[i].accountid + "")$> ></a>
</div>
</td>
<td><$=data[i].name$></td>
<td><$=data[i].totalScore$></td>
<td>998</td>
<td>99A</td>
<td>20</td>
<td>1</td>
<td>1</td>
<td>1</td>
</tr>
<$ } $>
</script>
今天本想在模板的for循环中加入隐藏域 然后通过隐藏域的值 去查找对应td下面的值,后来谷歌是没有任何问题,缺发现IE下面出现了兼容性问题。
在IE下通过$(input[name='xx' + playerid]).siblings("xx") 通过隐藏域去循环td 在 IE下 死活都是找不出来的 因为在隐藏域中 input是没有高度的,
但是在chrome中隐藏域是你写在的那个元素的位置,这样就引起了兼容性问题。后来改造代码去掉隐藏域,把tr上作为查找节点来查询下面td的值,
这样就都能查找到值了,所以以后遇到这问题的同学可以注意下
//维持面板状态
function updateComparePanel() {
var players = $.cookie("comparePlayers");
if(players != null) {
if(players != "") {
players = players.split(",");
var arr = [];
for(var i = 0;i < players.length; i++) {
var tr = $("#" + players[i]);
var rolename = tr.children().eq(1).text();
var json = "{\"rolename\" : \"" + rolename + "\", \"accountid\" : \"" + players[i] + "\"}";
arr.push(json);
}
var jsonStr = "{\"data\":[" + arr.join(",") + "]}";
var html = template("playerData", $.parseJSON(jsonStr));
$("#player").html(html);
$("#compareSize").text(players.length);
$(".contrast").show();
} else {
$("#compareSize").text(0);
$(".contrast").fadeOut(1000);
}
}
}
var tr = $("#" + players[i]);
var rolename = tr.children().eq(1).text();
这两句就是改造后的值,通过选择器直接找到tr,再从tr去找下面的元素,避免通过隐藏元素去找其他元素