问题描述
我想知道是否可以在定位某个元素后检查它是否具有某个属性,如果它具有该属性,请避免使用它并获取一个新的属性。
这是我正在使用的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])')