查找具有数据项 属性 的所有元素,无论元素类型或数据项值如何

Find all elements that have a data item property, regardless of element type or data item value

到目前为止,我只能找到搜索包含特定数据项值的元素的解决方案。相反,我需要找到任何具有名为 data-showsubmenutypes 的数据项的元素(当前为 inputselect),该数据项也具有任何值。

到目前为止,我的解决方案是使用两个单独的搜索(确实有效):

$(".ContactForm fieldset input[data-showsubmenutypes], .ContactForm fieldset select[data-showsubmenutypes]").each(function () {
    // myArray.push($(this).data("showsubmenutypes"));
});

然而,它冗长且难以阅读。 有什么办法可以简化上面的操作吗?

我已经尝试了几十次,但都 return undefined 错误,例如:

$(".ContactForm fieldset").data("showsubmenutypes").each(function () {

$(".ContactForm fieldset *").data("showsubmenutypes").each(function () {

$(".ContactForm fieldset [data-showsubmenutypes]").each(function () {

您尝试过查找吗?

var test = $('div').find('[data-list]');
$(test).each(function(i, value){
   console.log(value);
})

https://jsfiddle.net/bykse6xp/

您应该可以只使用属性选择器。我还看到您似乎正在尝试获取所有值,使用 map 将使您的生活更轻松。

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>