检查所选元素是否包含属性

Checking if a selected element contains an attribute

本文关键字:包含 属性 是否 元素 检查      更新时间:2023-09-26

我在我的选择元素上附加了两种类型的列表。

用户列表:<option value="domain'davidr" userid="108">David</option>

组列表:<option value="Test Group" groupid="10">Test Group</option>

这是我选择的 html:

    <select id="groupOwner">
      <option value="default" disabled>Select a Group Owner</option>
      <optgroup label="---Users---"></optgroup>
    </select>

我需要根据所选列表项类型将变量设置为"用户"或"组"。

我尝试这样做:var ownerType = $("#groupOwner[groupid]") ? "group" : "user";但它不断返回"组"

首先,groupiduserid 不是 option 元素的有效属性,会使您的页面无效。请改用data-*属性:

<!-- Example user item -->
<option value="domain'davidr" data-userid="108">David</option>
<!-- Example group item -->
<option value="Test Group" data-groupid="10">Test Group</option>

其次,#groupOwner是选择,而您需要检查所选option的数据属性。试试这个:

var ownerType = $("#groupOwner option:selected").data('groupid') ? "group" : "user";

示例小提琴

$("selector").get(0).hasAttributes("attributes");

你的选择器将始终被评估为 true:如果你的选择器没有匹配项,jQuery 返回一个空数组,该数组将在三元测试中被评估为true

你应该测试 jQuery 返回的数组的长度,以确定你的元素是否在 DOM 上。

例:

// Will print No, foo isn't an HTML element present on the DOM
$('foo').length ? console.log('Yes') : console.log('No');
// Will print Yes, $('foo') = []
$('foo') ? console.log('Yes') : console.log('No');