2012-06-12 55 views
0

我正在尝试编写一些代码,用于展开HTML select中的每个项目,然后加粗玩家的姓名。它只适用于行间有警告框的情况,如下所示:与JQuery的竞态条件

$("#users > option").css("font-weight", "normal"); 
alert('AHAHSDYHSAUDHSAUDHSAUDH');   
$('#users option[value="' + strPlayer + '"]').css("font-weight", "bold"); 

如果我删除警告框,则播放器项目不会变粗体。我唯一的猜测是,JQuery操作是异步的。不知道如何解决这个问题。

谢谢。

+2

是否选择框被异步填充? –

+0

你可以发布相关的HTML或小提琴吗? – jbabey

+3

css()绝对不是异步的。你可以创建一个简短的[fiddle](http://jsfiddle.net/)来重现你的问题吗? –

回答

0

为什么不把第一部分的CSS(全部设置为非粗体)以及最后一部分的jQuery(将用户名设置为粗体)。这是更好地使用CSS规则来应用默认的,可预测的样式,然后用定制的jQuery:

<style type="text/css"> 
#users > option {font-weight:normal;} 
</style> 
<script type="text/javascript"> 
$('#users option[value="' + strPlayer + '"]').css("font-weight", "bold"); 
</script> 

编辑:

如果两个语句的重叠是相互矛盾的,请尝试删除重叠:

$('#users option:not([value="' + strPlayer + '"])').css("font-weight", "normal"); 
$('#users option[value="' + strPlayer + '"]').css("font-weight", "bold"); 
+0

谢谢,但我需要这个原因是因为在轮之间不同玩家的名字变得粗体(取决于当前领导者是谁) –