Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
选择时的jQuery$.value>;没有值属性的选项_Jquery_Html - Fatal编程技术网

选择时的jQuery$.value>;没有值属性的选项

选择时的jQuery$.value>;没有值属性的选项,jquery,html,Jquery,Html,给定此HTML代码: <select id="menu"> <option>hi</option> <option>bye</option> </select> 返回hi,即使菜单中的第一个选项上没有值属性 如果具有值属性,则会按预期返回值属性 如何将上述代码的返回值设置为未定义的/我可以识别的其他内容?或者我可以检查值属性是否已设置,如果未设置,则仅运行上述代码吗?如果未设置值属性,则该值默认为文本值。只

给定此HTML代码:

<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