[英]Why my Delete function deleting only First element in express with jquery
[英]why jQuery .find() only return first element?
我正在尝试使用find()
function 来获取我的所有子元素, each()
function 我期待它返回所有元素,但它只获得第一个元素。 这两个功能有什么误解吗?
if ($('.test').length > 0) { var srcset; $(".test").each(function(index, ele) { srcset = $(ele).find("source").attr("srcset"); console.log(srcset); }); }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <picture class="test"> <source srcset="###"> <source srcset="###"> <source srcset="###"> <img src="#" alt=""> </picture>
你得到第一个是因为.attr()
将返回第一个元素属性,你必须使用.each()
循环选择,还有一个你可以直接使用".test source"
选择器的东西,这是一个工作片段:
if ($('.test').length > 0) { srcset = $(".test source"); srcset.each(function(i, el){ console.log($(el).attr('srcset')); }); }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <picture class="test"> <source srcset="###"> <source srcset="###"> <source srcset="###"> <img src="#" alt=""> </picture>
实际上, .find("source")
返回所有元素,如您在此处看到的:
$(".test").each(function() { var source = $(this).find("source"); console.log(source.length); });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <picture class="test"> <source srcset="###"> <source srcset="###"> <source srcset="###"> <img src="#" alt=""> </picture>
您可以在上面看到source.length
返回3
,但问题在于.attr("srcset")
。 当我们使用.attr()
时,它只返回集合中第一个匹配元素的值。 要解决此问题,您只需遍历所有source
元素,然后获取srcset
如下:
var srcset; $(".test source").each(function() { srcset = $(this).attr("srcset"); console.log(srcset); });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <picture class="test"> <source srcset="/abc"> <source srcset="/123"> <source srcset="/example/object/"> <img src="#" alt=""> </picture>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.