jQuery 如何指定现有选择器

发布于 2024-09-12 04:01:01 字数 997 浏览 4 评论 0原文

如何在 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 做一些事情。 那么如何将选择器附加到 $(this) 呢?

例如 $(this'input:checkbox')

抱歉,如果这是一个愚蠢的问题。

How do I do a selection on a existing selection in jQuery?
This is the given 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>

The jQuery part:

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

Of curse the click function triggers if the div gets clicked.
But I'd like it to get triggered if the checkbox is clicked.
I could just do
$('#search input:checkbox')
but I need to do some stuff with #search first.
So how to I append a selector to $(this)?

e.g. $(this'input:checkbox')

Sorry if it's a fools question.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

始终不够爱げ你 2024-09-19 04:01:02

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

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

还有许多其他类似的树遍历方法

你也可以这样做: $(':checkbox', this) 但这实际上只是由 jQuery 在幕后转换为上面的内容,所以在我看来最好自己做。

You would use .find() in this case, for example:

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

There are many other tree traversal methods like this as well.

You can also do: $(':checkbox', this) but that's really just converted to the above by jQuery under the covers, so better to do it yourself IMO.

好久不见√ 2024-09-19 04:01:02

使用 .find()

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

Use .find().

On another note, there's no reason to use .each() on $('#search') because that selector will only ever return 1 element, since HTML element IDs must be unique.

烟─花易冷 2024-09-19 04:01:02

定义一个变量来包含您的结果集。

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

然后使用 .add() 方法。

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

Define a variable to contain your result set.

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

Then use the .add() method.

$myVar = $myVar.add($('#search input:checkbox'));
$myVar.click(function(){
    alert('div or checkbox clicked');
});
不语却知心 2024-09-19 04:01:02

您可以使用

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

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

所以

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

You can use

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

where the second parameter is the context on which to search for elements which match the selector.

So

$(":checkbox", $(this)).click(function(){
    alert('checkbox clicked');
});
绝不服输 2024-09-19 04:01:02

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

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

use your parent() and children() methods. You can specify selectors as arguments.

$(this).children(':checkbox');
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文