Функция jQuery работает на click (), а не на ready ()

0

Я пытаюсь изменить атрибут "href" в соответствии с атрибутом элемента sibling.

$(function() {
    $(".container").click(function() {
        var href = $(this).find('.one').attr('href');w
        $(this).find('.two').attr('href', href);
    });
})

когда 'click();' обработчик события используется, и я нажимаю на .container, href .two обновлений, однако, когда просто использует ready(); для его выполнения, как только страница загружается, она не выполняется.

  • 0
    Вы можете опубликовать весь альтернативный код, используя ready (), чтобы показать, что не работает?
  • 1
    Замените .click на .each . Этого должно быть достаточно.
Показать ещё 2 комментария
Теги:

1 ответ

0

Если вы хотите сохранить контекст в элементе .container, просто измените функцию click на each, например:

$(function() {
    $(".container").each(function() {
        var href = $(this).find('.one').attr('href');
        $(this).find('.two').attr('href', href);
    });
});

Для получения дополнительной информации о each функции jQuery см. Здесь.

ОБНОВИТЬ

Также вы можете немного улучшить производительность, кэшируя значение $(this), например:

$(function() {
    $(".container").each(function() {
        var $this = $(this),
            href = $this.find('.one').attr('href');

        $this.find('.two').attr('href', href);
    });
});

ОБНОВЛЕНИЕ 2

Если вам не .two контекст .container, вот код, который изменит атрибуты href всех этих элементов с классом .two, которые появляются после элемента с классом .one.

Вот живой пример в JSFiddle.

  • 0
    И почему он должен использовать каждый? У него есть несколько .container 's?
  • 0
    1. Если есть селектор класса, то предполагается, что может быть более одного элемента. 2. Этот код будет работать в обоих случаях.
Показать ещё 1 комментарий

Ещё вопросы

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