jQuery:最接近空白的textarea

时间:2013-05-23 04:13:02

标签: jquery parent-child

我在表单上有一个动态生成的文本区域。我想要做的是找到最近的(最近的$(this)应该适用于我的功能,前提是下方的兄弟姐妹被认为距离更远)空白一个,其中将放置一些内容

目前它指定了一个特定的一个,因此:

var $poorarea = $('textarea#doc_edits_attributes_0_body');

但是要使功能起作用,它需要像(非常伪代码):

var $poorarea = $(this).closest('textarea.editable_areas').empty();

任何帮助都会很棒。 jQuery中的父/子东西在最好的时候让我很困惑。至关重要的是它找到最近的空白

简化的HTML在这里:

<div class="controls">
  <div id="preview_article" class="thumbnail">
    <ul class="thumbnails" id="sort_articles">
      <li class="span5">
        <input class="article_chooser" id="doc_article_ids_" name="doc[article_ids][]" type="checkbox" value="23" /> 
      </li>
      <li class="span5"> 
        <input class="article_chooser" id="doc_article_ids_" name="doc[article_ids][]" type="checkbox" value="24" /> 
      </li>
      <li class="span5">
        <input class="article_chooser" id="doc_article_ids_" name="doc[article_ids][]" type="checkbox" value="26" /> 
      </li>
      <li class="span5">
        <input class="article_chooser" id="doc_article_ids_" name="doc[article_ids][]" type="checkbox" value="27" /> 
      </li>
      <li class="span5">
        <input class="article_chooser" id="doc_article_ids_" name="doc[article_ids][]" type="checkbox" value="28" /> 
      </li>
    </ul>
  </div>
</div>

<div class="control-group">
  <div class="controls">  
    <div class="tab-content">
      <textarea class="editable_areas" id="doc_edits_attributes_0_body" name="doc[edits_attributes][0][body]"></textarea>
      <textarea class="editable_areas" id="doc_edits_attributes_1_body" name="doc[edits_attributes][1][body]"></textarea>
      <textarea class="editable_areas" id="doc_edits_attributes_2_body" name="doc[edits_attributes][2][body]"></textarea>
    </div>
  </div>
</div>

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

在jQuery代码中使用pseudo-selector eq,它从元素数组中选择给定的索引,并通过for循环运行。

for(i = 0; i < $(".tab-content").children("textarea").length; i++){
    if($(".tab-content").children("textarea:eq(" + i + ")").val() == ''){
        //do whatever you need to do
        break;
    }
}