[英]How can I retrieve the contents of each div individually using jQuery
我有以下HTML,我一直无法选择我想要的内容。 我使用的是jQuery,而.children()没有得到文本节点。
<div id="hiddenMenus">
<div id="planetGranite">
<div class="menuItem">
<div class="productId">1</div>
<div class="productName">Child Admission</div>
</div>
<div class="menuItem">
<div class="productId">2</div>
<div class="productName">Adult Admission</div>
</div>
<div class="menuItem">
<div class="productId">3</div>
<div class="productName">Senior Admission</div>
</div>
<div class="menuItem">
<div class="productId">4</div>
<div class="productName">Student Admission</div>
</div>
<!-- Variable For Loop (Easier than Child-Nodes) -->
<div class="totalMenuItems">4</div>
</div>
</div><!-- End of #hiddenMenus -->
我想循环遍历'planetGranite'div并逐个选择每个'productName'类的内容,以便我可以构建一个交互式菜单。 以下是输出示例:
<div class="product">
<div class="productName">Child Admission</div>
<div class="quantity"><input type="text" name="quantity" placeholder="2" /></div>
<button type="button" onclick="addItem('Child Admission')">Add Item</button>
</div><!-- End of .product -->
这是我目前所拥有的,但是,我知道我很远,因为我不确定如何解决这个问题。 它必须适用于任何以这种方式格式化的HTML。
function generateMenu(menuId) {
// Get the Total Number of Menu Items
var totalItems = $('#' + menuId + " .totalMenuItems" ).html();
if (DEBUG && DEBUG_INPUT) alert("Menu: " + menuId + "\n"
+ "Items: " + totalItems + "\n");
// Get a reference to the Menu
var menu = $('#' + menuId);
var menuItem = null;
//alert(menu.html());
if (DEBUG && DEBUG_GEN_MENU) alert("Number of Children: " + (menu.children('.menuItem').length));
if (DEBUG && DEBUG_GEN_MENU) alert("Children: " + "\n"
+ "firstChild: "
+ menu.contents().filter(function() {
return this.nodeType === 3;
})
.wrap( '<div class="productName"></div>' )
.end());
for (var i = 0; i < menu.childNodes.length; i++) {
if (menu.childNodes[i].className == "menuItem") {
menuItem = menu.childNodes[i];
console.log("MenuItem");
//processMenuItem(menuItem);
break;
}
}
我已经阅读了文档,但我正在努力让contains()方法起作用。 请帮我找到选择内容的最简单,最快捷的方法。 谢谢!
您的编辑就像我即将发布的那样出现了。 以下是一些能够以正确的顺序获得产品的代码。 您可能需要修改它以在函数中使用它。
$('#planetGranite').find('.productName').each(function(){
var title = $(this).text();
console.log(title);
});
你需要取得与类名的每个格的内容productName
使用.each()
函数为::
$(".productName").each(function(){
alert($(this).text());
});
为了更好地参考Demo,请使用此JSfiddle Link
$(document).ready(function() { var planet = $('#planetGranite'); planet.children('.menuItem').each(function(item) { var productId = $('.productId', this).text(); var productName = $('.productName', this).text(); }); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="hiddenMenus"> <div id="planetGranite"> <div class="menuItem"> <div class="productId">1</div> <div class="productName">Child Admission</div> </div> <div class="menuItem"> <div class="productId">2</div> <div class="productName">Adult Admission</div> </div> <div class="menuItem"> <div class="productId">3</div> <div class="productName">Senior Admission</div> </div> <div class="menuItem"> <div class="productId">4</div> <div class="productName">Student Admission</div> </div> <!-- Variable For Loop (Easier than Child-Nodes) --> <div class="totalMenuItems">4</div> </div> </div><!-- End of #hiddenMenus -->
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.