jQuery如何指定现有的选择器

时间:2010-07-30 14:38:32

标签: jquery jquery-selectors

如何在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');
    });
});

诅咒点击功能会在点击div时触发。 但是如果单击该复选框,我希望它被触发。 我可以这样做     $('#search input:checkbox') 但是我需要先用#search做一些事情。 那么如何将选择器附加到$(this)?

e.g。 $(this'input:复选框')

对不起,如果这是一个愚蠢的问题。

5 个答案:

答案 0 :(得分:2)

在这种情况下,您会使用.find(),例如:

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

还有很多其他tree traversal methods也是这样。

你也可以这样做:$(':checkbox', this)但是这真的只是由jQuery转换为上面的内容,所以最好自己做IMO。

答案 1 :(得分:1)

使用.find()

另一方面,我没有理由在.each()上使用$('#search'),因为该选择器只返回1个元素,因为HTML元素ID必须是唯一的。

答案 2 :(得分:1)

定义一个变量以包含结果集。

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

然后使用.add()方法。

$myVar = $myVar.add($('#search input:checkbox'));
$myVar.click(function(){
    alert('div or checkbox clicked');
});

答案 3 :(得分:0)

您可以使用

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

其中第二个参数是搜索与选择器匹配的元素的上下文。

所以

$(":checkbox", $(this)).click(function(){
    alert('checkbox clicked');
});

答案 4 :(得分:-1)

使用您的parent()和children()方法。您可以将选择器指定为参数。

$(this).children(':checkbox');