j查询删除突出显示仅在已选中时
jQuery remove highlight only if already selected
这应该是一个非常基本的修复。我想在单击已突出显示的按钮时删除所选类。我希望在任何给定时间只突出显示一个按钮。
http://jsfiddle.net/7wy7sjm5/1/
我首先执行所有 remove 类的原因是,当单击一个时,我只想突出显示该类,而不是仍然突出显示以前单击的类。当单击已经突出显示的同一按钮时,想要删除突出显示。希望这是有道理的。
$(".details-btn").on("click", function(){
var $this = $(this);
//Add/Remove selected for button
$(".details-btn").removeClass("selected");
$this.toggleClass("selected");});
可能使用 .each() 循环浏览按钮的每个实例,如果它有类然后删除? 我尝试了不同的方法,但没有一种方法按照我想要的方式工作。
在这种情况下,你可以使用 .not()。
基本上,从除当前带有not(this)
的当前.details-btn
之外的所有中删除.selected
。然后,使用toggle()
$(".details-btn").on("click", function() {
var $this = $(this);
$(".details-btn").not(this).removeClass("selected");
$this.toggleClass("selected");
});
$(".details-btn").on("click", function() {
var $this = $(this);
$(".details-btn").not(this).removeClass("selected");
$this.toggleClass("selected");
});
* {
margin: 0;
padding: 0;
font-size: 1.1em;
}
table {
border: 1px solid;
text-align: center;
}
thead {
background-color: #ddd;
}
th {
border-bottom: 1px solid;
}
td {
width: 140px;
}
.details-btn {
background-color: #dad1ea;
width: 50px;
margin: 4px auto;
border: 1px solid #4b3575;
border-radius: 5px;
cursor: pointer;
}
.selected {
color: #fff;
background-color: #4b3575;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<table>
<thead>
<tr>
<th scope="col">Data</th>
<th scope="col">View</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>
<p class="details-btn">+</p>
</td>
</tr>
<tr>
<td>2</td>
<td>
<p class="details-btn">+</p>
</td>
</tr>
<tr>
<td>3</td>
<td>
<p class="details-btn">+</p>
</td>
</tr>
<tr>
<td>4</td>
<td>
<p class="details-btn">+</p>
</td>
</tr>
<tr>
<td>5</td>
<td>
<p class="details-btn">+</p>
</td>
</tr>
<tr>
<td>6</td>
<td>
<p class="details-btn">+</p>
</td>
</tr>
</tbody>
</table>
在删除之前存储类状态,如果之前未添加,则添加它。固定小提琴。
// Store class state.
var hadClass = $(this).hasClass("selected");
// Remove classes from all elements.
$(".details-btn").removeClass("selected");
// If there was no class before removing, the class will be added, otherwise if
// there was a class before, the class will not be added again.
if (!hadClass) {
$(this).addClass("selected");
}
相关文章:
- 当查询不在displayField中时,引导Ajax Typeahead不显示结果
- 使用按钮和媒体查询切换显示状态
- 菜单更改时仍显示@media查询
- onchange选择get value并执行查询,然后在同一页面上显示结果
- 使用jquery显示mysql查询结果
- 问题 - 在查询加载器 2 加载页面之前显示 1 秒的页面
- j查询用户界面按钮未显示
- j查询地理位置和地图突出显示
- 如何显示查询回调数据结果仅从开始
- 显示查询输出 HTML 中的图像
- 在控制台.log中显示查询的 [对象对象] 的字段
- 通过使用Fusion Table Layer平移和缩放以显示查询结果
- jquery/ajax以用户输入为条件运行php查询,然后显示查询结果而不刷新页面
- 如何在html选项框中显示查询结果
- Cloudboost.初学者.如何显示查询示例
- 使用php和ajax在表中显示查询中的值
- TypeAhead没有't显示查询结果
- 使用jquerybuilder显示查询
- 显示查询字符串 asp.net
- 突出显示查询在jQuery自动完成动态列表源