2

我在 .click 中有一个 jQuery 函数,但它不起作用。我已经测试了 jQuery 并且它正在工作,但是已经尝试了多种组合作为 .click 内的测试,并且由于某种原因无法正常工作。控制台为空白,并表示没有错误。但是,它确实说它找不到我定义的任何变量...

html:

<body>
    <section id="container_header">
        <header>
            <nav>
                <a id="home">Home</a>
                <a id="about">About</a>
                <a id="work">Work</a>
                <a id="contact">Contact</a>
            </nav>
        </header>
    </section>
    <section id="container_content">
        <div class="section" id="section-home"></div>
        <div class="section" id="section-about"></div>
        <div class="section" id="section-work"></div>
        <div class="section" id="section-contact"></div>
    </section>

使用 CSS 我正在渲染空 div 并且它们正确显示。现在对于js:

        $(function(){
            $(this).click(function(){
                var pid = $(this).attr("id"); //console says this var is not defined???
                $(this).hide(); //even this does not work???
                //$("div[id^=section-]").hide(); //this works just fine???
                //$(this).closest("#container_header").hide(); //not working???
                //$(this).closest("body").find("#section-" + pid).show(); //no likey???
                //alert("h"); //works
            });
        });

上面的评论描述了有用的东西和没有用的东西。这可能是愚蠢的,但我看不到。是的,在测试时,我会在尝试之前删除评论。

4

3 回答 3

2

ready处理程序中,this绑定到文档本身。既然你写了:

$(function() {
    $(this).click(function() {  // Here, 'this' is 'document'.
        var pid = $(this).attr("id");
        $(this).hide();
    }
});

您正在尝试获取id不存在的文档的属性,然后隐藏文档本身,这是无法实现的。

尝试匹配暴露类的<div>元素:section

$(function() {
    $("div.section").click(function() {
        var pid = $(this).attr("id");
        $(this).hide();
    }
});
于 2012-12-16T09:02:18.517 回答
1

也许这就是你想要的,你的第一个this用错了,应该是标签选择器。

$(function() {
  $('#container_header a').click(function() {
    $('#container_content > div').hide();
    $('#section-'+this.id).show();
  });
});
于 2012-12-16T09:01:01.643 回答
0

您可以使用以下命令删除所有控制台日志:

if ( window.console && window.console.log ) {  console.clear(); }
于 2017-01-16T14:18:51.257 回答