if ($ («#» id «img»). is («: hidden»))

0

Приветствую вас. Я узнал только основы. Я создаю игру в JavaScript. Но я не знаю, что означает этот "img". Он используется много раз в коде. И это меня смущает. Пожалуйста, помогите мне.

$("#card div").click(function() {
    id = $(this).attr("id");
    if ($("#"+id+" img").is(":hidden")) {
        $("#"+id+" img").fadeIn('slow');
        if (imageopen == "") {
            showimg = id;
            imageopen = $("#"+id+" img").attr("src");
        }
    }
});
  • 1
    img - это тег изображения, он ищет потомков img элемента, по которому вы щелкнули. Хотя $(this).find('img').is(':hidden') будет иметь те же результаты
  • 2
    Не обязательно, find('img') будет эквивалентен, children() ограничен только поиском непосредственных потомков элемента.
Показать ещё 1 комментарий
Теги:

4 ответа

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

Это плохой код.

id = $(this).attr("id");
if ($("#"+id+" img").is(":hidden"))

Это означает получение id элемента, который был нажат. Предположим, что этот id был строкой foobar. Затем мы создаем строку, которая выглядит как #foobar img. То есть строки объединяются (это называется конкатенацией). Они используются для создания селектора jQuery, который находит img элементы в #foobar.

Это плохой способ сделать это. Простым способом является использование метода find jQuery:

var img = $(this).find('img');
if (img.is(':hidden')) {
    img.fadeIn('slow');

    // etc
}

Стоит также отметить, что $(this).attr('id') всегда плохая идея. Разумеется, вам действительно не нужно значение id чтобы делать то, что вы делаете, но это полезно для будущих ссылок. this ссылка на элемент, который был нажат. Вы можете получить доступ к свойству id элемента, выполнив this.id Он будет возвращать точно так же, как $(this).attr('id'), но более эффективно.

  • 0
    Также this.id (я знаю, вы знаете, OP, я думаю, нет). @rain: внутренне в jQuery реализована функция find() , для которой не нужно сохранять данные в контексте.
  • 0
    @ raina77ow Ну, это работает, но, на мой взгляд, это менее интуитивно и явно. Более того, точно так же за кадром.
Показать ещё 5 комментариев
0

img - это тег HTML <img src="" alt=""/> содержащийся в элементе DOM #id

0

$("#"+id+" img") означает, что вы ищите тег <img> внутри тега контейнера с id #id

0
$("#"+id+" img")

является:

$("#56 img")

где 56 будет id attr любого тега, дочерними элементами id=card.

И это указывает:

<anytag id=56><img ...>

Фактически, ссылается на тег img выше.

Конечно, .is(":hidden") возвращает true, если ссылочный тег скрыт (display: hidden;).

Ещё вопросы

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