突出显示和取消突出显示在 jquery 中选择的项目

Posted

技术标签:

【中文标题】突出显示和取消突出显示在 jquery 中选择的项目【英文标题】:highlight and un-highlight item selected in jquery 【发布时间】:2014-09-10 18:33:47 【问题描述】:

我有一个图片缩略图的动态列表。每次选择图像时,我都想取消选择当前选择的图像并选择新单击的图像。 html 如下所示:

<ul class="imgList">
    <li>
        <div id="item1" class="imgStyle" order="#" imgId="imgId">
            <img src="imgPath"/>
        </div>
    </li>
    <li>
        <div id="item2" class="imgStyle" order="#" imgId="imgId">
            <img src="imgPath"/>
        </div>
    </li>
    <li>
        <div id="itemn" class="imgStyle" order="#" imgId="imgId">
            <img src="imgPath"/>
        </div>
    </li>
</ul>

我使用 jquery 来绑定点击事件上的项目,如下所示:

$( ".imgStyle img").bind( "click", function() 
    $(item1).css("border", "5px solid grey");

我可以轻松选择/突出显示单击的项目。但是如何取消选择先前突出显示的项目(div)? 谢谢!

【问题讨论】:

【参考方案1】:

你应该使用 CSS 类:

.selected  border: 5px solid gray;

$('.imgList').on('click','img', function() 
   $(this).parents('.imgList').find('.selected').removeClass('selected').end().end().addClass('selected');
);

【讨论】:

我以为我更快。但是由于您提供了相关的 css 样式,我会为您的回答 +1 =)【参考方案2】:

我很少直接操作css样式,而是添加一个类,当它不再使用时,我就简单地删除这个类。

例如

$( ".imgStyle img").bind("click", function() 
    $(".imgStyle").removeClass("highlight");
    $(item1).addClass("highlight");

【讨论】:

感谢您提供更简单的解决方案!【参考方案3】:

按照你已经在做的方法:

$( ".imgStyle img").bind( "click", function() 
    $( ".imgStyle img").removeAttr("style");
    $(item1).css("border", "5px solid grey");

由于jquery的.css()方法将属性添加到元素的内联style属性中,去掉everyother img的这种样式就足够了

但是

你最好使用一个类来定义一个被选中的元素,比如:

.selected 
    border: 5px solid gray;

然后:

$(".imgStyle img").bind("click", function() 
    $(".selected").removeClass("selected");
    $(this).addClass("selected");

【讨论】:

如果存在他不想删除的现有样式元素怎么办? @JamesHill,我从The html looks like below: 得知情况并非如此......

以上是关于突出显示和取消突出显示在 jquery 中选择的项目的主要内容,如果未能解决你的问题,请参考以下文章

如何在 RecyclerView 中选择和取消选择项目?如何仅在回收站视图中突出显示所选项目?

如何以编程方式(VS 6)取消突出显示 MFC CListCtrl 中先前选择的行?

如何在 Jquery Mobile 选择选项中更改突出显示颜色

使用 jQuery 比较和突出显示表格数据

在 mouseup 文本选择 + HTML5/jQuery 上覆盖突出显示的文本

在word中如何取消突出标记