为什么我的代码中val()返回的值为空?

时间:2015-11-01 10:08:29

标签: javascript jquery jsp jquery-ui

我尝试更改打开对话框的UI,从显示要从选择框内打开到2列表格的文件列表。

原始代码:

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);
});

现在我将选择框更改为如下表:

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()); 
});

前者警告我点击的文件的名称,但后者提供了一个空的警告框。任何人都可以解释为什么会这样吗?

1 个答案:

答案 0 :(得分: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()); 
});