检查所选元素是否包含属性
Checking if a selected element contains an attribute
我在我的选择元素上附加了两种类型的列表。
用户列表:<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";
但它不断返回"组"
首先,groupid
和 userid
不是 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');
相关文章:
- 带有填充属性的SVG矩形显示在包含元素的上方插入框阴影
- 在循环中包含特定属性
- JavaScript选择器:查找包含具有特定属性的子体的节点
- 访问键中包含空格的嵌套属性
- 使用 Chai - 如何检查对象属性是否包含 DOM 元素
- 在包含带有jquery或js的html的变量中禁用change属性
- 如果指令包含在另一个指令中,我如何在隔离范围内添加双向数据绑定属性
- Javascript:如何制作一个包含4个具有相同属性的对象的数组
- 句柄中包含括号的问题处理属性
- 替换对象's属性,其中包含JavaScript中另一个对象的属性,不包含库
- 检查所选元素是否包含属性
- 为什么JavaScript包含属性在Chrome浏览器中不起作用
- 如何使用 $.parseXML 在客户端上分析包含属性的 xml 字符串
- 使用字符串访问包含属性的数组
- 使用包含属性的键和值的字符串创建数组
- 包含属性的数组中的IndexOf
- 是否有一种简单的方法来判断json对象是否包含属性
- JavaScript对象如何包含属性(键值对)的数组(带方括号)?
- 返回包含属性的函数中的函数
- 获取包含属性onclick的image,然后隐藏img