jQuery在切换期间更改'a'标记的属性

时间:2012-08-29 13:28:02

标签: javascript jquery html

好的,我有一个<a标记,可以调用切换功能来删除<td标记。在a代码中,我有&lt;&lt; ...&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');
    }
}

2 个答案:

答案 0 :(得分:2)

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

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()”。这是一种更通用的方式来判断元素是否在页面上实际可见,而不是简单地查看其样式(可能未定义)。

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

FIDDLE