我有一排图像,当用户点击图像时,则选择该图像。如何设置在jquery中切换click事件,以便:
1)一次只能选择一张图像 2)如果单击所选图像,则取消选择该图像。
到目前为止,这是我用的小提琴:http://jsfiddle.net/jamiefearon/BY9Fp/1/
$(document).ready(function () {
var selectedTile = null;
$('[id^="tile-"]').click(function () {
$(this).css("background", "red");
$(this).css("opacity", "0.4");
selectedTile = $(this).attr("name");
console.log(selectedTile);
});
});
答案 0 :(得分:1)
我会将样式移动到CSS类中,如下所示:
.tile_wrap.selected {
background: red;
opacity: 0.4;
}
然后使您的点击处理程序类似于:
var tiles = $('.tile_wrap');
$('[id^="tile-"]').click(function () {
if($(this).hasClass('selected'))
{
$(this).removeClass('selected');
}
else
{
tiles.removeClass('selected');
$(this).addClass('selected');
selectedTile = $(this).attr("name");
console.log(selectedTile);
}
});
您可以看到更新的jsFiddle here。
答案 1 :(得分:0)
使用.siblings()
$(this).siblings().css({background:"",opacity:1});
$(this).css({"background": "red","opacity":"0.4"});
答案 2 :(得分:0)
改进了代码版本:
var $tiles = $('.tile_wrap');
$tiles.click(function() {
$(this).toggleClass('active');
$tiles.not(this).removeClass('active');
});
改进使您的代码更简单,更高效:
$titles
; class
而不是[id^="tile-"]
选择元素,这样会更有效率; css
方法。请改用addClass
。