问题描述
我试图在点击时一次设置每个 <li>
元素的样式,而不是一次全部设置。对于每次点击,第一次,然后是第二次点击,下一次,依此类推...
$("a").click(function() {
var menu = document.getElementsByTagName("li");
for (var i = 0; menu[i]; i++) {
$(menu).css("background","red");
}
});
p {
color: red;
margin: 5px;
cursor: pointer;
}
p:hover {
background: yellow;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a>sdadsa</a>
<ul>
<li>asda</li>
<li>sadada</li>
<li>sada</li>
<li>asdad</li>
</ul>
解决方法
一种方法是添加一个类来进行样式设置。
当您单击元素时,找到第一个没有该类的 <li>
并将其添加到该类中。
添加和删除类通常比修改和撤消内联样式更容易
$("a").click(function() {
$('li').not('.red-bg').first().addClass('red-bg')
});
.red-bg {background:red}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a>sdadsa</a>
<ul>
<li>asda</li>
<li>sadada</li>
<li>sada</li>
<li>asdad</li>
</ul>
可以使用 jQuery 的 .css() 来检查指定元素的 css 值
$("a").click(function() {
var menu = document.getElementsByTagName("li");
for (var i = 0; menu[i]; i++) {
// get element of current index
const menuElement = menu[i];
// if the first element's background is not red.
if ($(menuElement).css("background") !== "red") {
// set it red.
$(menuElement).css("background","red");
// escape for loop
break;
}
}
});
,
您可以使用指向当前 li 元素的变量,该元素应在下次单击时更改背景。当锚点标签被点击时,我们移除前一个 li 元素的背景并改变当前元素的背景
clickConfirmWindow(driver,SURVEY_EXIT_BUTTON_ID_LOCATOR,"Survey exit window");
... and many mode windows with unique ID with random order
protected void clickConfirmWindow(WebDriver driver,String elementId,String name) {
// Check if warning window is displayed using button ID
System.out.println("Searching " + name + " using " + elementId);
if (isClickable(driver,elementId,1)) {
System.out.println("Found " + name + " using " + elementId);
driver.findElement(By.id(elementId)).click();
}
}
protected void clickConfirmWindow(WebDriver driver,1)) {
System.out.println("Found " + name + " using " + elementId);
driver.findElement(By.id(elementId)).click();
}
}
private Boolean isClickable(WebDriver driver,int timeOut) {
try {
new WebDriverWait(driver,timeOut).until(ExpectedConditions.visibilityOfElementLocated(By.id(elementId)));
return true;
} catch (TimeoutException e) {
e.printStackTrace();
return false;
}
}