Начинается с Selector с целью $ (this) - PullRequest
2 голосов
/ 19 апреля 2011

У меня есть набор полей формы, основанный на выводе из базы данных.Когда страница загружена, поля заполняются значением из базы данных.

По сути, я хочу управлять .show () .hide () элементов div на основе значения входных данных.Если он больше> 0, то div должен отображаться.

Каждый вход имеет класс «событие», поэтому я использую селектор «Начинается с», чтобы нацелиться на входы и обработать оператор if (), однако ястолкнувшись с проблемами нацеливания отдельных элементов после этого факта.

            if ($('input[class^="event"]').val() > 0) {
                $(this).parent().show();
            }

Мой базовый ($ ('input [class ^ = "event"]'). val ()> 0) работает, если япоставить предупреждение ();на это, но, как я уже сказал, нацеливание элементов после этого не работает для меня.

РЕДАКТИРОВАТЬ - Как требуется, HTML

<div class="formbox Open sept25_morning"><input name="newsletter" value='#POPULATED_FROM_DB' class="event"/><strong>Good 'ol Hockey Game<br />
    9:00 am - 11:00 am</strong><br />&nbsp;</div>

<div class="formbox Open sept25_morning"><input name="newsletter" value='#POPULATED_FROM_DB' class="event"/><strong>Event #2<br />
    9:00 am - 11:00 am</strong><br />&nbsp;</div>  

Ответы [ 4 ]

4 голосов
/ 19 апреля 2011

Это действительно зависит от того, в каком контексте вы запускаете оператор if, вы можете попробовать что-то вроде этого, если оно загружено на страницу:

$('input[class^="event"]').each(function() {
    if($(this).val() > 0) {
        $(this).parent().show();
    }
});

Пример здесь

1 голос
/ 19 апреля 2011

Если я правильно понимаю ваш вопрос, вы хотите выбрать все входные данные с классом, который начинается с "event", а затем показать их родительский класс, если значение больше нуля?

Вы можете использовать .each как в ответе Скублера, или .filter как ниже:

$('input[class^="event"]')
    .filter(function () {
        return $(this).val() > 0;
    })
    .parent()
    .show()
;
0 голосов
/ 19 апреля 2011

Метод val возвращает только значение первого входа. Чтобы проверить каждый вход, вам нужно использовать цикл each:

$('input[class^="event"]').each(function () {
    var $this = $(this);
    if ($this.val() > 0) {
        $this.parent().show();
    }
});

Кроме того, несмотря на это, я мог бы поклясться, что был селектор jQuery, основанный на значении ввода, но я не смог найти ничего подобного в документации. Там, вероятно, плагин или что-то.

EDIT

Кроме того, на основе вашего HTML не похоже, что вам нужен этот сложный селектор. Вы могли бы просто использовать input.event или что-то еще.

0 голосов
/ 19 апреля 2011

Вы можете сделать:

$("input.event").each(function(){
    if ($(this).val()> 0) {
        $(this).closest("div").show();
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...