2014-02-07 32 views
2

我有一个隐藏的div和一个链接来切换div的可见性。该链接包含需要切换('隐藏'/'显示')的文本/ HTML。这里是我的功能:HTML实体里面的jQuery html()

jQuery('#toggle_filter_link').click(function() { 
    jQuery('#searchfilter_wrap').slideToggle("slow"); 
    jQuery(this).html(jQuery(this).text() == 'Hide ↑' ? 'Show ↓' : 'Hide ↑'); 
}); 

如预期,直到我添加箭头到HTML(↑↓),此时它切换为“隐藏↑”第一次,然后仍停留此功能。

这里a jsFiddle

我假设我需要以某种方式转义HTML实体,但考虑到第一个开关的工作原理,我有点困惑。可能很明显,我很想念。 :-)

感谢您的帮助!

+0

尝试之前添加\; S – ElendilTheTall

+0

前添加\;不幸的是没有工作。 – pschueller

回答

3

你比较文本HTML

变化jQuery(this).text()jQuery(this).html()

请注意,由于浏览器使HTML标准化的方式可能仍然存在问题,因此您可能会更好地测试其他条件。

jQuery('#toggle_filter_link').click(function() { 
    jQuery('#searchfilter_wrap').slideToggle("slow"); 
    var $this = jQuery(this); 
    if ($this.hasClass('show')) { 
     $this.removeClass('show'); 
     $this.html('Hide ↑'); 
    } else { 
     $this.addClass('show'); 
     $this.html('Show ↓'); 
    } 
}); 

...或者只是测试的是不会是标准化的东西:

jQuery('#toggle_filter_link').click(function() { 
    jQuery('#searchfilter_wrap').slideToggle("slow"); 
    jQuery(this).html(jQuery(this).text().indexOf('Hide') > -1 ? 'Show ↓' : 'Hide ↑'); 
}); 
+0

谢谢!更改为.html()不起作用,可能是因为您提到的HTML被标准化的方式......所以我现在正在测试indexOf('隐藏'),它的功能就像一个魅力。 – pschueller