JQuery, как указать существующий селектор - PullRequest
4 голосов
/ 30 июля 2010

Как сделать выборку для существующей выборки в jQuery?Это заданный HTML

<div id='search'>
    <form action='' method='GET'>
        <input id="searchbutton" type='submit' name='qs' value='search'>
            <div id="searchoptions">
                <input type="checkbox" checked="checked" id="search_books book" name="search_books" value="1" /><label for="search_books">book</label>
                <input type="checkbox" checked="checked" id="search_movies movie" name="search_movies" value="1" /><label for="search_movies">movies</label>
            </div>
    </form>
</div>

Часть jQuery:

$('#search').each(function(){
    //do stuff
    $(this).click(function(){
        alert('checkbox clicked');
    });
});

Конечно, функция click срабатывает, если в div нажали.Но я бы хотел, чтобы он срабатывал, если флажок установлен.Я мог бы просто сделать $ ('# search input: checkbox'), но сначала мне нужно кое-что сделать с #search.Итак, как мне добавить селектор к $ (this)?

например, $ (this'input: checkbox ')

Извините, если это глупый вопрос.

Ответы [ 5 ]

2 голосов
/ 30 июля 2010

В этом случае вы бы использовали .find(), например:

$(this).find(':checkbox');
//equiavlent to $('#search :checkbox')

Существует много других методов обхода дерева , подобных этому.

Вы также можете сделать: $(':checkbox', this), но на самом деле это просто преобразуется в вышеперечисленное с помощью jQuery под обложками, поэтому лучше сделать это самостоятельно IMO.

1 голос
/ 30 июля 2010

Определите переменную, которая будет содержать ваш набор результатов.

var $myVar = $('#search');

Затем используйте метод .add ().

$myVar = $myVar.add($('#search input:checkbox'));
$myVar.click(function(){
    alert('div or checkbox clicked');
});
1 голос
/ 30 июля 2010

Использование .find().

С другой стороны, нет смысла использовать .each() для $('#search'), потому что этот селектор будет возвращать только 1 элемент, поскольку идентификаторы HTML-элементовдолжен быть уникальным.

0 голосов
/ 30 июля 2010

Вы можете использовать

$(":checkbox", $(this));

где второй параметр - это контекст для поиска элементов, соответствующих селектору.

So

$(":checkbox", $(this)).click(function(){
    alert('checkbox clicked');
});
0 голосов
/ 30 июля 2010

используйте ваши методы parent () и children ().Вы можете указать селекторы в качестве аргументов.

$(this).children(':checkbox');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...