我使用Bootstrap:
<ul class="list-group">
<li class="list-group-item active">Cras justo odio</li>
<li class="list-group-item">Dapibus ac facilisis in</li>
<li class="list-group-item">Morbi leo risus</li>
<li class="list-group-item">Porta ac consectetur ac</li>
<li class="list-group-item">Vestibulum at eros</li>
<li class="list-group-item">Cras justo odio</li>
<li class="list-group-item">Dapibus ac facilisis in</li>
<li class="list-group-item">Morbi leo risus</li>
<li class="list-group-item">Porta ac consectetur ac</li>
<li class="list-group-item">Vestibulum at eros</li>
</ul>
选择了第一行。
我只想向用户1选择的行显示。
当用户通过使用Javascript向Click-Event添加函数来点击一行时,我可以举起一个事件。
然后我可以将该行设置为活动状态。但会发生的是需要取消选择上一个选定的行。
可以接受的方式是什么?
如何枚举和访问每一行以更改其类设置?
有更好的CSS方法吗?
附加 所有这些方法都有效(感谢大家),但如果我的页面上有多个选项组,我怎样才能明确删除我正在使用的那个上的活动突出显示的行?
答案 0 :(得分:19)
我们这里伙计。我为你做了一个JSfiddle
$(function(){
console.log('ready');
$('.list-group li').click(function(e) {
e.preventDefault()
$that = $(this);
$that.parent().find('li').removeClass('active');
$that.addClass('active');
});
})
JSFiddle已更新为拥有多个组
答案 1 :(得分:7)
如果您正在使用jQuery,它看起来像这样:
$(".list-group list-group-item").click(function(e) {
$(".list-group list-group-item").removeClass("active");
$(e.target).addClass("active");
});
答案 2 :(得分:2)
var $lis = $('.list-group li')
$lis.on('click', function(){
$lis.removeClass('active')
$(this).addClass('active')
})
答案 3 :(得分:1)
我会使用javascript首先找到list-group元素中具有&#34;活动类&#34;的第一个元素,然后删除该类。完成后,您可以继续将活动类添加到您单击的元素中。
这可以通过jQuery的.addClass()和.removeClass()功能来完成。
答案 4 :(得分:0)
我只使用CSS(没有JavaScript)制作了解决方案。但是,它不适用于标准<ul>
和<li>
HTML标记。换句话说,结果看起来只是样式中的Boostrap列表组,但从语义上讲它不是HTML列表。
遗憾的是CSS doesn't have a :parent selector和the :has selector cannot be used within stylesheets,这有助于我们实现您的建议。
如果您可以根据所需的风格交换语义损坏的代码,我的解决方案肯定会对您有所帮助。
归结为隐藏<input type="radio" />
元素,但不隐藏其<label>
,然后使用CSS伪选择器,以便在选择单选按钮时使列表元素更改其样式。
基本的CSS将是:
.list-group input[type="radio"] {
display: none;
}
.list-group input[type="radio"]:checked + .list-group-item {
background-color: #0275D8;
color: #FFF;
}
基本HTML将是:
<div class=""list-group>
<input type="radio" name="RadioInputName" value="Value1" id="Radio1" />
<label class="list-group-item" for="Radio1">Caption for Radio1</label>
</div>
以下是CodePen,以防您想要查看代码: https://codepen.io/lehonti/pen/OzoXVa
答案 5 :(得分:0)
我认为这是一种更好的方法:
$(document).off("click" ,".list-group .list-group-item").on("click" ,".list-group .list-group-item" ,function(){
$(this).sibbling().removeClass("active");
$(this).addClass("class");
});
答案 6 :(得分:0)
这对我有用...
Mono<Date> currentTime = Mono.just(Calendar.getInstance().getTime());
Mono<Date> realCurrentTime = Mono.defer(() -> Mono.just(Calendar.getInstance().getTime()));
// 1 sec sleep
Thread.sleep(1000);
currentTime.subscribe(time -> System.out.println("Current Time " + time.getTime()));
realCurrentTime.subscribe(time -> System.out.println("Real current Time " + time.getTime()));
Thread.sleep(2000);
currentTime.subscribe(time -> System.out.println("Current Time " + time.getTime()));
realCurrentTime.subscribe(time -> System.out.println("Real current Time " + time.getTime()));
答案 7 :(得分:0)
$(function(){
console.log('ready');
$('.list-group li').click(function(e) {
e.preventDefault()
$that = $(this);
$that.parent().find('li').removeClass('active');
$that.addClass('active');
});
})
//style
.list-group-item.active
{
z-index: 2;
color: #fff;
background-color: white;
border-color: #0168fa;
color: white;
}
答案 8 :(得分:-1)
可能bootstrap不能。您可以使用我们自己的类名,并像在bootstrap中一样编写我们自己的css。
例如:
.choised > span {
color: #DDDDDD;
}