声明变量而不返回值。

亚历山大·索洛尼克(Alexander Solonik)

嗨,大家好,我是Jquery和JS的新手,基本上有一个非常简单的问题,我在网上遇到了排序脚本,并且通过浏览jquery文档来尝试了解发生了什么:

脚本如下:

$(function () {
        var buttons = $('#fruit,#vegetable,#meat').click(function() {
            $(this).toggleClass('active');
            var classes = buttons.filter('.active').map(function() {
                return this.id;
            })
            .get().join(',.');
            $('div.fruit,div.vegetable,div.meat').hide().
                filter('.' + (classes || 'none')).show();               
                console.log(classes.get().join(',.'));
        });
    });

并且此脚本在以下HTML上运行:

<div style="float:right; padding:25px;">
            <button id="fruit" class="active"><span>fruit</span></button>
            <button id="vegetable" class="active">vegetable</button>
            <button id="meat" class="active">meat</button>
        </div>

        <div>
            <p>Trying to use buttons as an "or" case rather than "and." When choosing fuit or vegetable, I want to see tomato as part of each list, <em>not just</em> when both are selected.</p>  

        <div class="fruit">
            <p>apple</p>
        </div>

        <div class="vegetable">
            <p>pumpkin</p>
        </div>

        <div class="vegetable">
           <p>okra</p>
        </div>

        <div class="fruit">
            <p>orange</p>
        </div>

        <div class="meat">
            <p>beef</p>
        </div>    


        <div class="fruit vegetable">
            <p>tomato</p>
        </div>    

        </div>

在这里摆弄

现在,我了解脚本的大部分内容,但以下内容除外:

在脚本的第四行,作者使用以下代码:

                var classes = buttons.filter('.active').map(function() {

现在button尚未返回任何值,所以它不应该为空吗?

还是通过说以下内容(在第一行上):

            var buttons = $('#fruit,#vegetable,#meat').click(function() {

作者还隐式定义了按钮,如:

var buttons = $('#fruit,#vegetable,#meat')

我努力理解这个简单的概念时,有人可以为我澄清这一点吗?

谢谢你。

亚历克斯-Z

阿尔尼塔克(Alnitak)

这是一个不寻常的模式,但是在以下语句中buttons确实正确地(并且显式地声明了):

var buttons = $(...).click(...);

click发生任何事件时,上述代码将已经执行(因为JS是单线程的),并且buttons已经包含所需的元素集,并且可以在回调中安全地使用。

当然,这也依赖于许多jQuery方法“链接”的方式-它们返回与调用它们的对象相同的对象,因此最终结果是buttons确实包含$('#fruit,#vegetable,#meat')

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

声明变量而不返回值。

来自分类Dev

用未来的返回值声明变量

来自分类Dev

复合IF声明它为Javascript,函数不返回值

来自分类Dev

不返回值

来自分类Dev

存根不返回值

来自分类Dev

$ _POST不返回值

来自分类Dev

存根不返回值

来自分类Dev

订阅不返回值

来自分类Dev

函数不返回值

来自分类Dev

.text()不返回值

来自分类Dev

函数不返回值

来自分类Dev

反射不返回值

来自分类Dev

类不返回值

来自分类Dev

函数不返回值

来自分类Dev

如何使用const_reference类型声明变量并将变量赋值给front()函数的返回值

来自分类Dev

如何使用const_reference类型声明变量并将变量赋值给front()函数的返回值

来自分类Dev

设置方法声明的多个返回值

来自分类Dev

Java Checkstyle错误“不允许声明变量,返回值或'Integer'类型的参数。”

来自分类Dev

为什么必须将用于保存getchar返回值的变量声明为int?

来自分类Dev

在JavaScript中的一条语句中声明变量并返回值

来自分类Dev

Python不返回值但显示值

来自分类Dev

$_GET 变量在 MVC 设计的代码中的搜索功能中使用时不返回值

来自分类Dev

R函数不返回值

来自分类Dev

jQuery函数不返回值

来自分类Dev

Meteor.WrapAsync不返回值

来自分类Dev

Express .map函数不返回值

来自分类Dev

为什么返回值不更新?

来自分类Dev

HashMap不基于键返回值

来自分类Dev

Response.write()不返回值