Cheerio JS 我可以检查一个属性是否包含在我已经在 cheerio JS 中选择的元素中吗

Cheerio JS Can I check if an attribute is included in an element I already selected in cheerio JS

我想知道是否可以在定位元素后检查它是否具有某个属性,如果它具有该属性,请避开它​​并获得一个新的。

这是我正在使用的html:

<option
              
              
              value="19438389624960">
                1
            </option>
          
            <option
              
              disabled="disabled"
              value="19438389657728">
                2
            </option>
          
            <option
              
              
              value="19438389690496">
                3
            </option>
          
            <option
              
              disabled="disabled"
              value="19438389723264">
                4
            </option>

如您所见,4 个选项中有 2 个具有我想避免的 disabled="disabled" 属性,无论如何我可以做到吗?

我目前有这段代码可以从所有选项中选择一个随机值:

var list = [];
                $('select[name=id]').find('option').each(function (index, element) {
                    list.push($(element).attr('value'));
                });

                const randomVar = list[Math.random() * list.length | 0]

                variant = randomVar

但此代码仍会选择具有 disabled="disabled" 属性的代码

你可以使用这个:

$('select[name=id]').find('option[disabled!="disabled"]').each(...)

跳过具有 disabled=disabled 的选项。然后,您将从 non-disabled 项中随机挑选一项。由于 cheerio 使用与 jQuery 相同的选择器引擎,您可以在 jQuery doc.

的相关页面中找到此类内容

:not 是一个常规的 css 伪,这意味着它在任何地方都有效:

$('option:not([disabled="disabled"])')

或者可能只是:

$('option:not([disabled])')