对jquery/javascript很陌生,但精通html/css。。。
我有一个class.item的兄弟姐妹列表。每个都是地图上的一个别针。我想实现3件事:
- 点击时打开/关闭切换,使用一个我用CSS操作的类"active">
- 当一个.项目打开时,单击另一个以关闭它并打开新项目
- 在.项目外部单击时,它将关闭
我看到了一些使用id的例子,但希望我可以只使用.item类,或者使用父id-#映射。
我已经使用toggleClass()实现了第一点
$('#map .item').click(function() {
$(this).toggleClass('active');
});
简化的html:
<div id="map">
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
</div>
谢谢你的帮助。
如果我理解正确,这应该有效:
$(function () {
$('#map .item').click(function(evt) {
evt.stopPropagation(); //stops the document click action
$(this).siblings().removeClass('active');
$(this).toggleClass('active');
});
$(document).click(function() {
$('#map .item').removeClass('active'); //make all inactive
});
});
你可以在这里阅读更多关于冒泡事件的信息http://api.jquery.com/event.stopPropagation/
类似的东西也会起作用:
$("#map .item").click(function(e) {
var self = $(this)[0];
$(".item").each(function(index) {
if (self == $(this)[0])
$(self).addClass("active");
else
$(this).removeClass("active");
});
});
$("body").click(function(e) {
if (!e.target.id == "map" || !$(e.target).parents("#map").size()) {
$(".item").removeClass("active");
}
});
这是一个小提琴的例子。