0

好的,我有一个<a标签,它调用一个切换函数来删除一个<td标签。在那个a标签中我有&lt;&lt;...<<

在功能中,我想在执行切换时将其更改<<为。>>它不工作。我究竟做错了什么?

html:

<td class="filter_td" id="filter_td">
  <td class="show_hide">
            <a href="javascript:toggleFilters();" id="show_hide" alt="Hide Filters" title="Hide Filters">&lt;&lt;</a>
        </td>

jQuery:

   function toggleFilters()
{
    var td = $("#filter_td");
    td.toggle('slow');
    if (td.css("display") == "none")
    {
        $("#show_hide").html("&gt;&gt;").attr('title', 'Show Filters');
    }
    else
    {
        $("#show_hide").html("&lt;&lt;").attr('title', 'Hide Filters');
    }
}
4

2 回答 2

2

将更改文本的代码放入“切换”的回调中。这样,您就知道动画已完成并且元素的可见状态已完成。像这样的东西:

var td = $("#filter_td");
td.toggle('slow', function () {
    if (td.not(":visible"))
    {
        $("#show_hide").html("&gt;&gt;").attr('title', 'Show Filters');
    }
    else
    {
        $("#show_hide").html("&lt;&lt;").attr('title', 'Hide Filters');
    }
});

此外,我将检查是否隐藏更改为 jQuery 的“.not()”。这是一种更通用的方式来判断元素是否在页面上实际可见,而不是简单地查看其样式(可能未定义)。

于 2012-08-29T13:37:45.940 回答
1
$("#show_hide").on('click', function() {
    var td = $("#filter_td"),
        state = td.is(':visible');
    td.toggle('slow');
    $("#show_hide").html(state?"&gt;&gt;":"&lt;&lt;")
                   .prop('title', (state?'Hide':'Show')+' Filters');
});

小提琴

于 2012-08-29T13:45:13.960 回答