使用jQuery </div>遍历<div>列表

时间:2012-09-21 13:04:40

标签: javascript jquery

我想使用jQuery迭代以下示例中的<div>列表:

<div id="selectedDefinitionsDiv">
    <div id="selectedDef1" class="myclass">
        <textarea class="textClass" style="margin-left:5px;width:600px;height:80px;">an adoptive country</textarea>
        <input type="button" onclick="removeSelectedDefinition(1)" value="Delete">
    </div>
    <div id="selectedDef2" class="myclass">
        <textarea class="textClass" style="margin-left:5px;width:600px;height:80px;">my adopted state</textarea>
        <input type="button" onclick="removeSelectedDefinition(2)" value="Delete">
    </div>
</div>

我想提取每个textareas中的数据。在上面的示例中,an adoptive country my adopted state

我试过了

$(#selectedDefinitionsDiv).children('myclass').each(function(i) { 
    var val = $(this).children('textClass').value;
    processString( val );
});

但它根本不会进入循环。知道我的jQuery有什么问题吗?

5 个答案:

答案 0 :(得分:3)

选择器

中缺少引号

更改

$(#selectedDefinitionsDiv)

$("#selectedDefinitionsDiv")

还将值更改为val()并添加。在选择器

中的类名之前
$("#selectedDefinitionsDiv").children('.myclass').each(function(i) { 
    var val = $(this).children('.textClass').val();
    processString( val );
});

关于关闭第一个div的>的更多事情

<强> Live Demo on jsBin

<强> Live Demo on jsFiddle

答案 1 :(得分:2)

  1. 您需要引号:$(“#selectedDefinitionsDiv”)
  2. 相反值,您需要使用val()

答案 2 :(得分:1)

看起来需要一点整洁 - myclass需要以.为前缀,id需要在引号中。

children('.textClass')还需要.前缀:

$("#selectedDefinitionsDiv").children(".myclass").each(function(i)
{
   var val = $(this).children('.textClass').val();
   processString( val );
}); 

答案 3 :(得分:1)

使用现有代码,您可能会收到JavaScript错误,因为语法是非法的。这解释了为什么代码没有执行。

是非法的语法
$(#selectedDefinitionsDiv)

缺少周围的引号,如$('#selectedDefinitionsDiv')

然而,虽然这修复了语法错误,但选择器还存在其他问题。

第二个和第三个选择器children('myclass').children('textClass')中的CSS类选择器缺少前导. - 它应该是.myclass.textClass而你需要使用jQuery的.val()而不是普通的JavaScript .value,因为您调用.value的对象是一个jQuery对象。

更简单的解决方案是提供更具体的选择器:

$('#selectedDefinitionsDiv .textClass').each(function(i) {  
    var val = $(this).val();
    processString(val);
});​

答案 4 :(得分:0)

试试这个:

$('textarea').each(function(i) { 
    var val = $(this).val();
    processString( val );
});

希望这有帮助。