选择时的jQuery$.value>;没有值属性的选项
给定此HTML代码:选择时的jQuery$.value>;没有值属性的选项,jquery,html,Jquery,Html,给定此HTML代码: <select id="menu"> <option>hi</option> <option>bye</option> </select> 返回hi,即使菜单中的第一个选项上没有值属性 如果具有值属性,则会按预期返回值属性 如何将上述代码的返回值设置为未定义的/我可以识别的其他内容?或者我可以检查值属性是否已设置,如果未设置,则仅运行上述代码吗?如果未设置值属性,则该值默认为文本值。只
<select id="menu">
<option>hi</option>
<option>bye</option>
</select>
返回hi
,即使菜单中的第一个选项上没有值
属性
如果
具有值
属性,则会按预期返回值
属性
如何将上述代码的返回值设置为未定义的/我可以识别的其他内容?或者我可以检查
值属性是否已设置,如果未设置,则仅运行上述代码吗?如果未设置值属性,则该值默认为文本值。只需将属性值设置为某个值,以便您可以识别它,例如,如下图所示的空字符串
<select id="menu">
<option value="">hi</option>
<option>bye</option>
</select>
你好
再见
然后此$(“#菜单选项”).first().attr(“value”)
将返回一个空字符串使用:not([attr])
选择器:
$("#menu option:not([value])");
我还验证了在更改后,[value]
仍然报告为未设置,因此您继续接收相同的两个元素,而没有value
属性
$('#menu').change(function(){
console.log($(this).val());
console.log($("#menu option:not([value])"));
});
使用此$(“选项:已选择”,“菜单”).attr(“值”)代码>
如果所选选项没有任何值属性,将返回undefined,您可以通过!foo有一个隐式的值
属性。您可能想在选择器中尝试:not([value])
。谢谢,但是我在插件中使用它,因此无法控制插件用户的HTML代码。我需要检查它是否是第一个没有值的选项。根据你的帖子,我试过:if($(“#菜单选项:not([value])”)。first()===$(“#菜单选项”)。first())
没有运气(总是false
)。你有什么想法吗?(我已经在浏览器控制台中验证了两个选择器返回相同的元素)好的,我得到了:($(“#菜单选项:非([value]))”[0]===$(“#菜单选项”)[0])
<代码>[0]
(返回元素)而不是.first()
(返回jQuery对象)。谢谢。当然可以,请参阅:使用$。is()
,它更简洁直接。
$('#menu').change(function(){
console.log($(this).val());
console.log($("#menu option:not([value])"));
});
var option = document.getElementById("menu").options[0];
if (option.getAttribute("value") !== null) {
console.log("Has value: " + option.value);
}
else {
console.log("Doesn't have a value.");
}
$("#menu option:eq(0)").not("[value]").length == 1