jQuery Найти класс, когда атрибуты класса содержат несколько имен классов (class = "classA classB classC") - PullRequest
0 голосов
/ 16 октября 2011

У меня есть такая структура 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>

Когда я нажимаю на любой div с именем класса «default», я бы хотел:

  1. Используйте .removeClass().addClass(), чтобы поменять класс с именем «selected» на «default»
  2. Обновить недавно нажатый div (с class == «default») на class == «selected»

Этот подход прекрасно работает, когда теги классов содержат ровно ОДНО имя класса (например: class = "default" и class = "selected"), но когда в пределах одного тега класса есть разделенный пробелами список имен классов, дела не идуттак гладко.

Вопрос: Как мне найти элемент с классом == "selected", когда в одном теге есть несколько имен классов *

Любая помощь оценена, ребята ....

Ответы [ 2 ]

2 голосов
/ 16 октября 2011

Похоже, вы пытаетесь создать меню навигации.Самый простой способ сделать это:

$(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'); 
1 голос
/ 16 октября 2011
$('.default').click(function(){
    $('.selected').removeClass('selected').addClass('default');
    $(this).removeClass('default').addClass('.selected');
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...