select>上的jQuery $ .value选项,其中没有值属性

时间:2013-01-13 05:15:03

标签: jquery html

鉴于此HTML代码:

<select id="menu">
    <option>hi</option>
    <option>bye</option>
</select>

这个jQuery代码:

$("#menu option").first().attr("value")

返回hi,即使菜单中的第一个选项没有value属性。

如果<option>具有value属性,则会按预期返回value属性。

如何将上述代码的返回值设为undefined /我可以识别的其他内容?或者我可以检查是否设置了value属性,如果不是,则只运行上面的代码?

5 个答案:

答案 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])"));
});

http://jsfiddle.net/userdude/NQm54/2/

答案 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