DA.*_*DA. 6 each jquery blackberry-os-v5
我一直在调试BlackBerry OS5设备上的一些jQuery(8530).有很多问题,但我已经缩小的问题与jQuery有关.each()
逻辑是这样的:
$objectArray.each(function(){
alert('test');
if(...some logic...){
$(this).addClass('testClass');
};
})
Run Code Online (Sandbox Code Playgroud)
在任何普通浏览器中,我都会收到警报,单击"确定",然后在逻辑语句为真时看到该特定项(在本例中为TD)获取更新的类.然后它通过其余的项目重复,每个项目都会收到警报,我确定它,然后我看到特定的TD课程得到更新.
然而,在黑莓8530上,我得到了每个警报,但TD没有逐个更新.相反,它们都会在最后一次警报后立即根据最后一次TD的if逻辑进行更新.
很可能这个特定的浏览器存在严重的JS问题,但我想知道是否有办法解决这个问题.有没有.each()在jQuery中使用的替代方案?
更新:
更详细的代码示例:
$TRs.each(function(){
var $TR = $(this);
var $checkBoxTD = $TR.find('td.td3');
var $checkBox = $checkBoxTD.find('input');
alert($checkBox.is(':checked'));
if ($checkBox.is(':checked')!=true){
$checkBoxTD.addClass('notSelected');
}
});
Run Code Online (Sandbox Code Playgroud)
我循环遍历TABLE的每个TR.在每个TR内是一个包含复选框的TD(.td3).我需要检查每一个.如果没有选中,我需要在TD上添加一个类.
在良好的浏览器中,警报将显示真或假,并且基于该特定警报,您将在解除警报时看到正确应用于该行的类.然后它为每一行重复.
在BB OS5的浏览器中,每个警报都弹出正确的值,但是在最后一个警报/循环之后才会更新类,因此每个TD类只使用最后一个循环的逻辑.
更新2(修复?):
感谢Alex,我做了一些更多的玩法,并找到了一种方法,让它在顽固的浏览器中工作.
$TRs.each(function(idx){
var $TR = $(this);
var $checkBoxTD = $TR.find('td.td3');
var $checkBox = $checkBoxTD.find('input');
alert($checkBox.is(':checked'));
if ($checkBox.is(':checked')!=true){
$TRs.eq(idx).find('td.td3').addClass('notSelected'); // <-- the 'fix'
}
});
Run Code Online (Sandbox Code Playgroud)
不同之处在于我将回到主要的jQuery对象$ TRs,并根据其索引特别从中获取其中一个元素.
基于此,我的最后一个问题是:上述解决方案是否对"好"浏览器有任何缺点?是否有性能受损?
尝试这个:
$objectArray.each(function(idx, element){
alert('test');
if(...some logic...){
$(element).addClass('testClass');
};
})
Run Code Online (Sandbox Code Playgroud)
更新:
试试这个,也许它的开销更少......
var $checkBox = $TRs.find('td.td3 input:not(:checked)');
$checkBox.each(function(){
$(this).parent().addClass('notSelected');
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
171 次 |
| 最近记录: |