以下代码中变量 var $content 为什么在下面 bind 方法中没有作用?

$(function(){
    var $content = $(this).next();

    $("#para h5.head").bind("mouseover",function(){
        $content.show();        //$(this).next().show();
    }).bind("mouseout",function(){
        $content.hide();        //$(this).next().hide();
    })
});

在执行的时候,变量 $content 访问不到,如果按照注释编辑代码反而可以使用。

引用segmentfaultagui1989解答:
var $content = $(this).next(); //这里的$(this)的上层如果找不到对象的话,会默认指向window,而window是没有next()的,这里就应该会报错了。

如果这里没有报错,那么这里的$content也只是特定的文档对象,而不是你以为的$(this).next()这段代码。

而你bind里的$(this)指的是这个$("#para h5.head")文档对象。
如果你上边的$content刚好也指向这个文档的话,就不会报错,比如把var $content = $(this).next();改成$("#para h5.head");则bind里就可以这样写:$content.next().show();

如果var $content=$("#para h5.head").next();则bind中可以这样写:$content.show();

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容