鉴于此HTML代码:
<select id="menu">
<option>hi</option>
<option>bye</option>
</select>
这个jQuery代码:
$("#menu option").first().attr("value")
返回hi
,即使菜单中的第一个选项没有value
属性。
如果<option>
具有value
属性,则会按预期返回value
属性。
如何将上述代码的返回值设为undefined
/我可以识别的其他内容?或者我可以检查是否设置了value
属性,如果不是,则只运行上面的代码?
答案 0 :(得分:20)
使用:not([attr])
选择器:
$("#menu option:not([value])");
http://jsfiddle.net/userdude/NQm54/
我还验证,更改后,[value]
仍然报告为未设置,因此您继续收到相同的两个元素而没有value
属性。
$('#menu').change(function(){
console.log($(this).val());
console.log($("#menu option:not([value])"));
});
答案 1 :(得分:2)
$("#menu option:eq(0)").not("[value]").length == 1
答案 2 :(得分:1)
如果未设置value属性,则默认值为文本值。只需将属性值设置为某个值,以便您可以识别它,例如一个空字符串,如下所示
<select id="menu">
<option value="">hi</option>
<option>bye</option>
</select>
然后这个$("#menu option").first().attr("value")
将返回一个空字符串
答案 3 :(得分:1)
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.");
}
答案 4 :(得分:0)
使用此function TPanelEditExpert.GetStyle: TExpertStyle;
begin
// show up in the Help menu
Result := esStandard;
end;
procedure TPanelEditExpert.Execute;
var
ModuleName, FormName, FileName: string;
ModIntf: TIModuleInterface;
begin
ToolServices.GetNewModuleAndClassName (
'Panel', ModuleName, FormName, FileName);
ModIntf := ToolServices.CreateModuleEx (FileName, FormName,
'Panel', '', nil, nil,
[cmNewForm, cmAddToProject, cmUnNamed]);
ModIntf.ShowSource;
ModIntf.ShowForm;
ModIntf.Release;
end;
如果所选选项没有任何值属性,将返回undefined,您可以捕获它!foo