为什么val()在我的代码中返回的值为空?
问题描述:
我试图更改打开对话框的UI,以显示要从选择框内打开的文件列表到2列的表格。为什么val()在我的代码中返回的值为空?
原代码:
JSP
<select size="15" id="options" class="dialog-pane-right"></select>
的JavaScript
for (var index = 0; index < length; index++) {
var page = data[index]; //data: data to be listed inside select box
var id = page.id || page;
var title = page.title || id;
var $option = $("<option></option>");
$option.html(title);
$option.attr("value", id);
}
提醒的选择,当在其上点击
choice = $('select#options option');
choice.click(function(){
alert($(this).val);
});
现在我改变了选择框的表LIK E本:
JSP
<table id="load-opt"></table>
的JavaScript
for(var ind=0; ind<data.length; ind++) {
//name is the name and desc is the description for each option
var $option = $("<tr></tr>");
$option.html("<td>"+name+"</td><td>"+desc+"</td>");
$option.attr("value", id);
}
上点击它
var choice = $('table#load-opt tr td');
choice.click(function(){
alert($(this.val());
});
前提醒我点击该文件名时提醒选择,但后者给出一个空的警报框。任何人都可以解释为什么会发生?
答
jQuery's val()
method用于获取或设置一个或多个元素的属性value
。
在你的情况,这是因为在HTMLOptionElement(<option>
)具有value
属性和HTMLTableCellElement(<td>
)没有一个。您应该使用.text()
代替.val()
,如:
var choice = $('table#load-opt tr td');
choice.click(function(){
alert($(this.text());
});
只有'input'和'textarea'具有价值属性,尝试使用'$(本)的.text()'或'$(本)。html的()相反。 – fuyushimoya
你需要找到'innerText'或'text()'而不是'val()',因为它不是表单元素! – Rayon
@fuyushimoya:我知道文本()的作品,但我想知道为什么val()失败。它正在选择选项。 – user3248186