1

我有两种类型的列表附加到我的选择元素。

用户列表:<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";但它一直返回“组”

4

3 回答 3

1

首先,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是 select,而您需要检查 selected 的数据属性option。试试这个:

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

示例小提琴

于 2013-10-29T15:56:13.120 回答
0

您的选择器将始终被评估为 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');
于 2013-10-29T15:58:15.433 回答
0

$("选择器").get(0).hasAttributes("属性");

于 2013-10-29T16:25:19.860 回答