我正在尝试使用 jQuery 根据在其中选择的选项更改选择元素的背景颜色。
为了生成选择元素,我使用了以下代码:
while ($qrow = $qquery->fetch(PDO::FETCH_ASSOC)) {
$aqanswer = "qAnswer" . $qrow['questionID'] . "";
$aqcomments = "qComments" . $qrow['questionID'] . "";
echo "<tr><td class='auditf'>" . $qrow['qDesc'] . "</td><td class='auditm'><select name='qAnswer" . $qrow['questionID'] . "' form='entryform' id = 'selectqAnswer". $qrow['questionID'] ."'>";
if (isset($_SESSION[$aqanswer])) {
if ($_SESSION[$aqanswer] === 'Green') {
echo "<option value='Green' selected='true' class = 'green'>Green</option>";
echo "<option value='Red' class='red'>Red</option>";
} elseif ($_SESSION[$aqanswer] === 'Red') {
echo "<option value='Green' class ='green'>Green</option>";
echo "<option value='Red' selected='true' class = 'red'>Red</option>";
}
unset($_SESSION[$aqanswer]);
} else {
echo "<option value='Green' selected='true' class = 'green'>Green</option>";
echo "<option value='Red' class = 'red'>Red</option>";
}
echo "</select></td><td class='auditl'><textarea name='qComments" . $qrow['questionID'] . "' rows='3' cols='30' maxlength='255' value='N/A'>";
if (isset($_SESSION[$aqcomments])) {
echo $_SESSION[$aqcomments];
unset($_SESSION[$aqcomments]);
} else {
}
echo "</textarea></td></tr>";
}
还有我的 jQuery:
$("[id^=selectqAnswer]").change(function () {
var color = $("option:selected", this).attr("class");
$("[id^=selectqAnswer]").attr("class", color);
});
现在这确实有效,但它显然会导致页面上的每个框都发生变化。问题是,页面上的框数可以根据用户选项更改,因此我没有可以在我的 jQuery 中单独引用的固定选择 ID 列表。我试过用谷歌搜索这个问题,但每一个结果都在谈论具体命名 ID,而不是使用程序生成的 ID。当我事先不知道 ID 具体是什么时,如何根据所选的选择选项仅更改特定选择元素的背景颜色。
最佳答案
$("[id^=selectqAnswer]").attr("类", 颜色);
这将改变每个#selectqAnswer 选择的颜色,如果你想改变当前选择的颜色使用this
Javascript
$(this).attr("class", color);
关于php - 更改程序生成的选择元素列表中特定选择元素的背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40082908/