gpt4 book ai didi

jQuery .each() 在 BB OS5 中出错?

转载 作者:行者123 更新时间:2023-12-03 22:52:44 27 4
gpt4 key购买 nike

我一直致力于在 BlackBerry OS5 设备(8530)上调试一些 jQuery。有很多问题,但我已经缩小了一个与 jQuery 的 .each()

有关的问题

逻辑是这样的:

$objectArray.each(function(){
alert('test');
if(...some logic...){
$(this).addClass('testClass');
};
})

在任何普通浏览器中,我都会收到警报,单击“确定”,然后看到该特定项目(在本例中为 TD)如果逻辑语句为真,则获得更新的类。然后它会重复其余的项目,每个项目都会收到警报,我确定它,然后我会看到特定 TD 的类已更新。

但是,在 BlackBery 8530 上,我收到每个警报,但 TD 并未逐一更新。相反,它们会在最后一个警报之后仅根据最后一个 TD 的 if 逻辑立即更新。

这个特定的浏览器很可能存在严重的 JS 问题,但我想知道是否有办法解决这个问题。在 jQuery 中是否有使用 .each() 的替代方法?

更新:

更详细的代码示例:

$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');
}
});

我正在循环遍历表的每个 TR。每个 TR 内都有一个包含复选框的 TD (.td3)。我需要检查每一项。如果没有选中,我需要向 TD 添加一个类。

在良好的浏览器中,警报将显示 true 或 false,并且根据该特定警报,当您关闭警报时,您将看到相应的类应用到该行。然后对每一行重复。

在 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'
}
});

不同之处在于,我将返回主 jQuery 对象 $TRs,并根据其索引专门从中获取其中一个元素。

基于此,我的最后一个问题是:上述解决方案对于“好”浏览器有什么缺点吗?性能有影响吗?

最佳答案

试试这个:

$objectArray.each(function(idx, element){
alert('test');
if(...some logic...){
$(element).addClass('testClass');
};
})

更新:

试试这个,也许它的开销更少......

var $checkBox = $TRs.find('td.td3 input:not(:checked)');
$checkBox.each(function(){
$(this).parent().addClass('notSelected');
});

关于jQuery .each() 在 BB OS5 中出错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6904020/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com