2015-11-01 124 views
2

我试图更改打开对话框的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()); 
}); 

前提醒我点击该文件名时提醒选择,但后者给出一个空的警报框。任何人都可以解释为什么会发生?

+0

只有'input'和'textarea'具有价值属性,尝试使用'$(本)的.text()'或'$(本)。html的()相反。 – fuyushimoya

+0

你需要找到'innerText'或'text()'而不是'val()',因为它不是表单元素! – Rayon

+0

@fuyushimoya:我知道文本()的作品,但我想知道为什么val()失败。它正在选择选项。 – user3248186

回答

0

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()); 
}); 
相关问题