<div class="big" onclick="dataadd()">
<div id="a">child1</div>
<div id="b">child2</div>
</div>
当我单击带有class="big"
标签的div时,我想获取孩子的ID或文本。
我尝试了所有几种方法,但无法处理。有人知道怎么做吗? Javascript或Jquery无关紧要。
非常感谢您!
答案 0 :(得分:3)
您可以通过dataadd(this)
来传递您单击的元素;
您可能想知道this
是如何进入方法的。如上添加this
关键字将引用当前元素。
然后使用该元素,您可以找到子项,并使用each
可以通过遍历这些子项来获取其他详细信息。
function dataadd(ele){
var children = $(ele).find('div');
children.each(function(idx, element){
console.log($(element).attr('id'));
});
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="big" onclick="dataadd(this)">
<div id="a">child1</div>
<div id="b">child2</div>
</div>
答案 1 :(得分:1)
使用children()
选择元素的子元素,并使用map()
将元素映射到id属性。
$(".big").click(function(){
var ids = $(this).children().map(function(){
return this.id;
}).toArray();
console.log(ids);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="big">
<div id="a">child1</div>
<div id="b">child2</div>
</div>
您还可以使用下面显示的更简单的代码
$(".big").click(function(){
console.log(
$('> *', this).map((i, val) => val.id).toArray()
);
});
答案 2 :(得分:1)
使用ES6的更现代方式:
document.querySelector(".big").addEventListener('click', function(e){
[...e.target.children].forEach(function(child){
const { id, innerText } = child;
console.log(id, innerText);
})
})
答案 3 :(得分:0)
您可以使用this
传递上下文,并使用querySelectorAll
获取div
,然后获取其id
function dataadd(elem) {
elem.querySelectorAll('div').forEach(function(item) {
console.log(item.id)
})
}
<div class="big" onclick="dataadd(this)">
<div id="a">child1</div>
<div id="b">child2</div>
</div>
答案 4 :(得分:-1)
function dataadd(){
$(this).children().each(function(){
console.log($(this).attr('id'));
})
}
此代码将打印big
格的ID。