我可以检查在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" attr的代码

解决方法

您可以使用此:

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

跳过具有disabled=disabled的选项。然后,您将仅从非禁用项中选择一个随机项。由于cheerio使用与jQuery相同的选择器引擎,因此您可以在jQuery doc的相关页面中找到此类内容。

,

:not是常规的CSS伪指令,这意味着它可在任何地方使用:

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

或者可能只是:

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