如何获取触发事件的div的输入?

时间:2016-04-14 03:25:56

标签: jquery twitter-bootstrap

基本上我想使用"这个"获取嵌套输入的属性。

我有一组使用Bootstrap和表单数据的可折叠元素。我想在用户折叠div时检查空数据。我使用JQuery来触发事件,但我不知道如何从触发事件的div中获取输入。

<div id="accordion" class="panel-group">
  <div class="panel panel-default">
    <div class="panel-heading">
      <a data-toggle="collapse" data-parent="#accordion" href="#Q1-body">
        Question Group 1
      </a>
    </div>
    <div id="Q1-body" class="panel-collapse collapse in">
      <div class="panel-content">
        <input type="text" name="Q1"></input>
      </div>
    </div>
  </div>
  <div class="panel panel-default">
    <div class="panel-heading">
      <a data-toggle="collapse" data-parent="#accordion" href="#Q2-body">
        Question Group 1
      </a>
    </div>
    <div id="Q2-body" class="panel-collapse collapse">
      <div class="panel-content">
        <input type="text" name="Q2"></input>
      </div>
    </div>
  </div>

我设置JQuery以在用户折叠它时查看输入。

  <script> 
  $(document).ready(function(){
    $(".collapse").on('hidden.bs.collapse',function(){
      var i = 0;
      $(this + ":input").each(function(){
        //some code
      });
    });
});
</script>

尝试此操作时出错。

3 个答案:

答案 0 :(得分:1)

jQuery可以接受这样的第二个参数。因此,您可以这样使用this

代码段:

$(".collapse").on('hidden.bs.collapse',function(){
   var i = 0;
   $(":input", this).each(function(){
     //some code
   });
 });

答案 1 :(得分:0)

该jquery选择器是否有效?你可以试试这个。

$(this).find(':input').each(function(){
    //some code
});

答案 2 :(得分:0)

您正在尝试将DOM元素(this)与字符串“:input”连接起来,然后将其用作jQuery选择器。 (即你在$(this + ":input")行中所做的事情)。不行。 this将是带有collapse类的元素,因此您之后的输入将是一个孩子。

以下内容应该更符合您的目标:

  <script> 
  $(document).ready(function(){
    $(".collapse").on('hidden.bs.collapse',function(){
      var i = 0;
      $(this).find(":input").each(function(){
        //some code
      });
    });
});
</script>