jQuery 当类属性包含多个类名时查找类 (class="classA classB classC")

发布于 2024-12-10 06:43:10 字数 713 浏览 0 评论 0 原文

我有一个像这样的 div 结构 [简单菜单]:

<div class="float menuA">
    <div class="float selected"></div>
    <div class="float default"></div>
    <div class="float default"></div>
    <div class="float default"></div>

    <div class="clear"></div>
</div>

当我单击类名为“default”的任何 div 时,我想:

  1. 使用 .removeClass().addClass() 交换类将“selected”更改为“default”
  2. 将最近单击的 div(class==“default”)更新为 class==“selected”

当类标签仅包含一个类名(例如:class="default")时,此方法可以正常工作和 class="selected") 但是当有在单个类标签内以空格分隔的类名列表,事情进展得不太顺利。

问题: 当单个标签内有多个类名时,如何找到 class=="selected" 的元素?

任何帮助都将不胜感激......

I have a div structure like this [simple menu]:

<div class="float menuA">
    <div class="float selected"></div>
    <div class="float default"></div>
    <div class="float default"></div>
    <div class="float default"></div>

    <div class="clear"></div>
</div>

When I click on any div with a classname of "default" I would like to:

  1. Use .removeClass().addClass() to swap the class called "selected" to "default"
  2. Update the recently clicked div (with class=="default") to class=="selected"

This approach works fine when the class tags contain exactly ONE classname (for example: class="default" and class="selected") but when there is a space seperated list of classnames within a single class tag, things dont go so smoothly.

Question:
How do I find the element with class=="selected" when there are multiple classnames within a single tag?

Any help appreciated guys....

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

萤火眠眠 2024-12-17 06:43:10

您似乎正在尝试制作导航菜单。最简单的方法是:

$(function() {
    $('div.menuA div.float').click(function() {
        $(this).siblings('.selected').removeClass('selected').addClass('default');
        $(this).removeClass('default').addClass('selected');
    });
});

但这并不能直接回答您的问题。为了“查找”另一个元素的子元素,请使用 find() 方法:

// finds all divs with class 'selected' in the div.menuA div
$('div.menuA').find('.selected');

如果您想跳过额外的 find() 调用,您可以可以将点连接在一起:

// selects divs with the classes 'selected' and 'default'
$('div.menuA div.selected.default'); 

It looks like you're trying to make a navigation menu. The easiest way to do this is:

$(function() {
    $('div.menuA div.float').click(function() {
        $(this).siblings('.selected').removeClass('selected').addClass('default');
        $(this).removeClass('default').addClass('selected');
    });
});

This doesn't directly answer your question though. In order to 'find' an element that's a child of another element, use the find() method:

// finds all divs with class 'selected' in the div.menuA div
$('div.menuA').find('.selected');

And if you want to skip the extra find() call, you can just concatenate the dots together:

// selects divs with the classes 'selected' and 'default'
$('div.menuA div.selected.default'); 
浅语花开 2024-12-17 06:43:10
$('.default').click(function(){
    $('.selected').removeClass('selected').addClass('default');
    $(this).removeClass('default').addClass('.selected');
});
$('.default').click(function(){
    $('.selected').removeClass('selected').addClass('default');
    $(this).removeClass('default').addClass('.selected');
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文