好的,我有一个<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"><<</a>
</td>
jquery的:
function toggleFilters()
{
var td = $("#filter_td");
td.toggle('slow');
if (td.css("display") == "none")
{
$("#show_hide").html(">>").attr('title', 'Show Filters');
}
else
{
$("#show_hide").html("<<").attr('title', 'Hide Filters');
}
}
答案 0 :(得分:2)
将用于更改文本的代码放入“toggle”的回调中。这样,您就知道动画已完成且元素的可见状态已完成。像这样:
var td = $("#filter_td");
td.toggle('slow', function () {
if (td.not(":visible"))
{
$("#show_hide").html(">>").attr('title', 'Show Filters');
}
else
{
$("#show_hide").html("<<").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?">>":"<<")
.prop('title', (state?'Hide':'Show')+' Filters');
});