如何从表中获取隐藏的td值?

sar*_*ran 10 jquery

我有一个这种格式的表.

<table>
  <tr>
     <td class="divOne">div one</td>
     <td class="divOne">11111</td>
     <td style="visibility:hidden" class="divOne">id1</td>
  </tr>
  <tr>
     <td class="divOne">div two</td>
     <td class="divOne">22222</td>
     <td style="visibility:hidden" class="divOne">id2</td>
  </tr></div>
  </table>
Run Code Online (Sandbox Code Playgroud)

我写了一个函数来显示鼠标上的另一个div.

$(function() {
  $('.divOne').hover(function() { 
  $('#Details').show(); 
}, function() { 
  $('#Details').hide(); 
});
});
Run Code Online (Sandbox Code Playgroud)

现在我需要在鼠标上获得'id'值.
我试过这个函数,但它返回一个空值...

$(function(){
$('.divOne').hover(function(){
  var id = $(this).find('td.hidden').html();
  alert(id);
});
});
Run Code Online (Sandbox Code Playgroud)

谁能帮我?

Sha*_*ter 12

说明

我认为其他人对你来说太难了.

你的代码的问题在于你试图td在a中找到一个td.当您$(this)在事件函数的上下文中执行时,它引用其事件被触发的元素.

$('.divOne').hover(function(){
    $(this); //<- "this" refers to the current "divOne" the user is hovering.
    // ".divOne" or $(this) is a td
    $(this).find("td.hidden"); //<- Attempts to find a td with the class "hidden" within ".divOne"
});
Run Code Online (Sandbox Code Playgroud)

但是,如果您使用正确的树遍历函数siblings和伪类,:hidden您将在您的努力中取得成功.

$('.divOne').hover(function(){
   var id = $(this).siblings(":hidden").html();
});
Run Code Online (Sandbox Code Playgroud)

这会给你所有td隐藏的东西.由于您的示例只有一个隐藏的列,因此它就足够了.

如果你想要一个特定的兄弟,你可以添加一个类或使用一个组合:nth-child(n):hidden.

$('.divOne').hover(function(){
   var id = $(this).siblings(".myclass:hidden").html();
});
Run Code Online (Sandbox Code Playgroud)

获取第三个和最后一个的id的最简单方法td是使用任何一个伪类

你也可以定义自己的类,myclass然后再做

$("td.myclass")
Run Code Online (Sandbox Code Playgroud)

这里有一个工作的jsfiddle例子 | 码

$('table tr').hover(
    function(){
        var id = $("td:nth-child(3)", this).text();
        //var id = $("td:last-child", this).text();
        //var id = $("td.myclass", this).text();

        $("#Details").html("Details box.<br /> Hovering \""+id+"\"");
        $("#Details").show();
    }, function() {
        $('#Details').hide();
    }
);
Run Code Online (Sandbox Code Playgroud)

请注意选择器的使用,我改为使用它,table tr以便只有在悬停进出表行时才需要触发事件.这也使我能够使用上下文引用.现在$(this)指的是用户正在悬停的行,并且其所有子节点td都在其中.

我还使用带有第二个参数选择器,定义我选择的上下文.默认情况下,它是整个文档.

这会将选择限制为用户悬停的元素及其子元素.呃......那个,我的意思不是用户的孩子,而是元素的孩子.

$("td:nth-child(3)", this) 
Run Code Online (Sandbox Code Playgroud)

等于: find the third table division within this row I'm hovering


参考