JQuery добавляет стили для каждого класса, когда я сказал не

0

Я установил атрибут данных, называемый "sel", и следующий jQuery запрашивает данные sel, который имеет значение "true", но он добавляет его в каждый класс, даже те, которые не имеют "data-sel" '

JQuery:

var selTrue = $(".slide").data("sel", 'true');
$(selTrue).css({'display': 'inline-block'});

HTML:

<div class='slide' data-sel='true'>1</div>

<div class='slide' data-sel='true'>2</div>

<div class='slide'>3</div>

<div class='slide'>4</div>

Как предотвратить использование приложения для каждого класса?

Попытка решить:

• Я пробовал это:

$(".slide").not(selTrue).css({'display': 'none'});

еще не решила мою проблему


скрипка

  • 0
    Из-за цепочки методов selTrue == $(".slide") .
  • 0
    @ Бармар, ах, я не думал, что функция данных имеет цепочку.
Показать ещё 1 комментарий
Теги:

3 ответа

8
Лучший ответ

Чтобы выбрать против вашего атрибута данных, вам необходимо использовать

$(".slide[data-sel='true']").css({'display': 'inline-block'});

то, что вы делаете, фактически выбирает все элементы с классом slide, а затем устанавливает атрибут data-sel.

здесь документация

http://api.jquery.com/attribute-equals-selector/

  • 0
    Ого, очень просто исправить, не могу поверить, я застрял на этом. В любом случае, спасибо! Я обязательно проголосую лучше (если это сработает).
  • 0
    Просто добавить. Было бы .slide [data-sel = 'true'] нет?
Показать ещё 2 комментария
2
$(".slide").each(function () {
    if ($(this).data("sel") === true) {
        $(this).css({'display': 'inline-block'});
    }
});

Вы устанавливаете атрибут data-sel равным true.

$(".slide").data("sel", 'true');
  • 1
    нет необходимости зацикливаться и проходить через условия. это легко выбрать по атрибутам данных. смотри мой ответ ниже
  • 0
    Мне никогда не нравилось использовать селекторы атрибутов. Есть еще несколько ошибок с открытыми билетами. Это, вероятно, быстрее, хотя.
0
var selTrue = $(".slide").data("sel", 'true');

То, что это делает, - это получить все div с классом "слайд" и установить для них значение "true" для ключевого "sel". Таким образом, selTrue является массивом jQuery всех .slide с классом .slide. А затем вы устанавливаете display: inline-block для всех элементов в массиве (4 divs на странице).

Что вы хотите сделать: $('.slide[data-sel = "true"]').css('display', 'inline-block')

Квадратные скобки указывают запрос на основе атрибута.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню