JavaScript:点击时展开区域

Eri*_*her 3 javascript css jquery twitter-bootstrap

我正在尝试做的是,当用户点击textarea时,它会扩展div以显示"发布"按钮.

这是我的意思的图片: 在此输入图像描述

因此,当用户点击文本框区域时,我需要展开背景div并显示"发布"按钮.

这是我开始的JSFiddle:http://jsfiddle.net/MgcDU/6018/

HTML:

<div class="container">
<div class="well">
    <textarea style="width:462px" placeholder="Comment..."></textarea>
    <button class="btn btn-primary" type="button">Post</button>

    <div class="clearfix"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

CSS:

textarea {
  margin-bottom: 0;
}

.btn {
  float: right;
  margin-top: 12px;
}

.container {
  margin:20px 0 0 20px;
}

.well {
  width: 476px;
  padding: 12px;
}
Run Code Online (Sandbox Code Playgroud)

我没有JavaScript经验,但我认为这是一个足够简单的项目,在完成后可以了解基础知识.

Kev*_*sox 6

将以下内容添加到标记和样式中并包含脚本.

HTML

    <button  class="btn btn-primary btn-toggle" type="button">Post</button>
Run Code Online (Sandbox Code Playgroud)

CSS

.btn-toggle{
    display: none;    
}
Run Code Online (Sandbox Code Playgroud)

使用Javascript

$("textarea").click(function(){
   $(".btn-toggle").slideDown();
});

$(document).click(function(e){
    e.stopPropagation();
    if($(e.target).parents(".well").length == 0){
        $(".btn-toggle").slideUp();
    }
});
Run Code Online (Sandbox Code Playgroud)

这段Javascript将点击事件处理程序绑定到textareadocument.绑定到的事件处理程序textarea只需向下滑动button即可使其可见.

绑定到该事件的事件处理程序document在页面上的每次单击时都会触发,因为单击事件会向上传播DOMdocument.一旦document触发事件,处理程序就会检查target(也就是点击的元素)是否在其中有父元素well.如果是这样,我们不会执行任何操作,因为我们不希望在用户单击textareabutton自身内部时隐藏按钮.如果点击在井外,我们调用slideup按钮上的功能以时尚的方式隐藏它.

工作示例: http ://jsfiddle.net/MgcDU/6025/

  • @Seth看到解释.在答案中. (2认同)