查找具有数据项属性的所有元素,无论元素类型或数据项值如何
Posted
技术标签:
【中文标题】查找具有数据项属性的所有元素,无论元素类型或数据项值如何【英文标题】:Find all elements that have a data item property, regardless of element type or data item value 【发布时间】:2019-12-15 11:18:12 【问题描述】:到目前为止,我只能找到搜索包含特定数据项值的元素的解决方案。相反,我需要找到任何元素(当前为 input
或 select
),其中包含一个名为 data-showsubmenutypes
的数据项,该数据项也具有任何值。
到目前为止,我的解决方案是使用两个单独的搜索(确实有效):
$(".ContactForm fieldset input[data-showsubmenutypes], .ContactForm fieldset select[data-showsubmenutypes]").each(function ()
// myArray.push($(this).data("showsubmenutypes"));
);
但是,它冗长且难以阅读。 有什么办法可以简化以上内容?
我尝试了几十次,都返回undefined
错误,例如:
$(".ContactForm fieldset").data("showsubmenutypes").each(function ()
$(".ContactForm fieldset *").data("showsubmenutypes").each(function ()
$(".ContactForm fieldset [data-showsubmenutypes]").each(function ()
【问题讨论】:
只是使用属性选择器".ContactForm fieldset [data-showsubmenutypes]"
不知道为什么你最后一次尝试没有成功。
【参考方案1】:
您应该可以只使用属性选择器。我还看到您似乎正在尝试获取所有值,使用地图将使您的生活更轻松。
const types = $('.ContactForm fieldset [data-showsubmenutypes]').map(function()
return $(this).data('showsubmenutypes')
).get()
console.log(types)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form class="ContactForm">
<fieldset>
<select data-showsubmenutypes="foo"></select>
<input data-showsubmenutypes="bar" />
</fieldset>
</form>
【讨论】:
【参考方案2】:您是否尝试过查找?
var test = $('div').find('[data-list]');
$(test).each(function(i, value)
console.log(value);
)
https://jsfiddle.net/bykse6xp/
【讨论】:
以上是关于查找具有数据项属性的所有元素,无论元素类型或数据项值如何的主要内容,如果未能解决你的问题,请参考以下文章
在 jQuery 中,如果元素包含属性,无论其值如何,我如何找到它们? [复制]