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

时间:2013-10-29 15:52:42

标签: javascript jquery html if-statement jquery-selectors

我的select元素附加了两种类型的列表。

用户列表:<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>

我需要根据所选的列表项类型将变量设置为“user”或“group”。

我尝试过这样做:var ownerType = $("#groupOwner[groupid]") ? "group" : "user";但它会一直返回“群组”

3 个答案:

答案 0 :(得分:1)

首先,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";

Example fiddle

答案 1 :(得分:0)

您的选择器将始终被评估为true:如果您的选择器不匹配,jQuery将返回一个空数组,在您的三元测试中将对其进行评估{/ 1}}。

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

示例:

true

答案 2 :(得分:0)

$( “选择”)得到(0).hasAttributes( “属性”);