问题描述
我已经尝试了一段时间,并经历了一系列方法,但是没有雪茄。
问:如何在AJAX响应后使用jQuery更改PHP while循环中单个div的颜色?
加尔!
这是我在响应中的jQuery函数:
$('.circle').each(function(){
$(this).css("background", "red");
});
在我的PHP文件中,我基本上说的是,如果状态存在,则回显div,但是当jQuery由响应触发时,它将影响所有$ red变量,而不只是我要定位的变量。 test2.php:
$red = "<div id='basic' class='circle' style='display: block; border-radius: 100%; width: 60px; height: 60px;' value='1'></div>";
if($row2['status'] == 1 || 0){
echo $red;
}
令人沮丧的是,如果我根据具有不同背景颜色和显示的数据ID来回显变量,则可以很好地工作:none ,但是使用jQuery方法无需刷新就可以正常工作。
1楼
AJAX和JQuery是同步的。 尝试将您的函数设置为回调,尤其是当它们依赖DOM更改时。
2楼
我认为您的问题是所有div都是同一个类,因此jQuery代码会影响它们。
您是否考虑过使用div的ID(而不是类)进行选择? 经验法则:使用class属性标识组中的所有相似实体,并使用ID唯一标识组中的每个实体。 ID是唯一的,类可以共享。
顺便说一句,如果要更改单个div,为什么还要使用jQuery的each()
?
each()
用于迭代一组匹配的元素,当您知道只有一个要操作的元素时,它没有用。
如果要单独选择div,请使用唯一的ID命名每个div:
<div if='basic_1' class='circle' ... >
<div if='basic_2' class='circle' ... >
<div if='basic_3' class='circle' ... >
然后更改您的jquery以仅选择要更改的div:
$('#basic_2').css("background", "red");
3楼
我知道您使用ajax执行php脚本并将一些变量( $row2['status']
)传递给它,如果此变量为1,则您希望将此特定div的背景色设置为红色 。
但是您没有告诉我们循环是否在每次迭代中都生成一个div,并且您想将特定的div背景设置为红色,或者只需要更改一个div背景颜色。
如果您只想更改一个div的背景颜色,则当条件发生时( $row2['status'] == 1
),您应该break;
然后跳出循环,您必须使用id
not class
选择div,因为正如@Marcovecchio所说
ID是唯一的,类可以共享。
如果您的循环将回显多个潜水,则必须确保您的页面不包含class = 'circle'
其他div,因此您只能更改回显的div。
如果您提供循环并告诉我们更多您想确切执行的操作,那就更好了。