JQuery выбрать один класс из многих - PullRequest
1 голос
/ 26 апреля 2010

Я пытаюсь добиться следующей функциональности. Внутри формы у меня есть несколько полей с именем класса .inputField, если выбрано одно из этих полей, то div, связанный с этим элементом, должен быть показан в фокусе и скрыт при размытии. Однако, когда я реализую приведенный ниже код при выборе второго элемента, класс применяется к обоим. Не уверен, куда я иду не так?!?!?

HTML-разметка:

<form class="friendlyForm" name="friendlyForm" id="friendlyForm">
                                            <ul>
                                                <li>
                                                    <label for="testField">Test field</label>
                                                    <input name="testField" value="here" class="inputField" id="testField" />
                                                    <div class="helper" style="display: none;">helper text here</div>
                                                </li>
                                                <li>
                                                    <label for="testField">Test field2</label>
                                                    <input name="testField2" value="here" class="inputField" id="testField2" />
                                                    <div class="helper" style="display: none;">helper text here</div>
                                                </li>
                                            </ul>
                                        </form>

jQuery разметка:

$('.friendlyForm').find('.inputField').each(function(i) {
    $(this).blur();
    $(this).focus(function() {
        //Add the focus class and fadeIn the helper div
        $(this).parent().addClass('focus');
        $(this).parent().parent().find('.helper').fadeIn();
    });
    $(this).blur(function () {
        //Remove the focus class and fadeOut helper div
        $(this).parent().removeClass('focus');
        $(this).parent().parent().find('.helper').fadeOut();
    });
});

Любые указатели здесь будут с благодарностью.

Спасибо

1 Ответ

2 голосов
/ 26 апреля 2010

Если я правильно понимаю ваш вопрос, это должно сработать.

$('.friendlyForm .inputField').each(function () {
  $(this).blur().focus(function () {
    $(this).parent().addClass('focus');
    $(this).siblings('.helper').fadeIn();
  }).blur(function () {
    $(this).parent().removeClass('focus');
    $(this).siblings('.helper').fadeOut();
  });
});

Что вы делаете неправильно, так это то, что вы используете parent().parent(), который получит тег <ul> и, таким образом, найдет все .helper элементы в этом <ul>.

...