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

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

前者会警告我单击的文件的名称,但后者会给出一个空的警告框。谁能解释一下为什么会发生这种情况?

最佳答案

jQuery's val() method用于获取或设置value一个或多个元素的属性。

就您而言,发生这种情况是因为 HTMLOptionElement ( <option> ) 有一个 value属性(property),以及 HTMLTableCellElement ( <td> ) 没有。您应该使用.text()而不是.val() ,例如:

var choice = $('table#load-opt tr td');
choice.click(function(){
    alert($(this.text()); 
});

关于javascript - 为什么我的代码中 val() 返回的值为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33461080/

相关文章:

javascript - 具有来自两个不同源的两个图层的 OpenLayers map 缩放方式不同。 OpenLayers 可以改变缩放级别的行为方式吗?

jquery - 为什么灯箱 jQuery 插件对我不起作用?

javascript - 我们如何在 JSP 页面上一次显示 Map<String, List<Object>> 中的一个键及其值?

java - 信息 : Error parsing HTTP request header

javascript - 从二维数组中获取img src和img维度并显示在body中

javascript - 为什么我的日期输入没有读取模型值?

javascript - 更改展开/折叠导航中的默认箭头

jquery - WebKit 转换 JQuery AddClass 不执行任何操作

java - 在 JSP 的 java 脚本中操作和存储 Java hashmap( map 的 map )以便稍后在组合菜单中使用

javascript - 加载淡入淡出动画未显示