在BB OS5中jQuery .each()有问题吗?

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,并根据其索引特别从中获取其中一个元素.

基于此,我的最后一个问题是:上述解决方案是否对"好"浏览器有任何缺点?是否有性能受损?

Ale*_*lex 2

尝试这个:

$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)