将jQuery缓动代码从ul li转换为table

时间:2013-07-25 16:24:12

标签: jquery html-table jquery-easing

这里我有一个jQuery缓入/退出功能,我试图将它从ul li转换为表格,但它对我不起作用。

   $(document).ready(function(){
      $('.topnav li').find('a[href]').parent().each(function() {
        var li = $(this),
        a = li.find('a'),
        div = $('<div>' + '<\/div>');

        li.hover(function() {
        a.stop().animate({marginTop: '-135'}, 600, "easeOutBack");
      },
      function() {
        a.stop().animate({marginTop: '0'}, 500, "easeOutBack");
      })
      .append(div);
    });
  });

我想知道除了将我的主要ul类从 .topnav li 替换为 .topnav tr td

之外我还有什么变化?

之前我使用过这个html:

 <ul class="topnav">
    <li><a href="#">my link</a><div>hello</div></li>
 </ul>

然后我把它改成了这样的表:

<table class="topnav">
<tr>
<td><a href="#">my link</a><div>hello</div></td>
</tr>
</table>
但到目前为止还没有运气。完全不起作用。可能有些东西缺失或者变化出现了问题...

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

这是将UL转换为TABLE(以某种方式)的函数:

function ul2table(ul){
    var tbl = $('<table class="topnav"/>');
    ul.find('li').each(function(){
        tbl.append($('<tr/>').append($('<td/>').html($(this).html())));
    });
    ul.replaceWith(tbl);
}

和用法:

  ul2table($('ul.topnav'));

答案 1 :(得分:1)

Anchor默认是内联元素,如果将其样式更改为display:block;,则动画可见。

table td a {
    display:block;
    margin-bottom: 115px;
}
table td {
    height:135px;
    float:left;
    overflow:hidden;
}

jsfiddle / another alternative