1

这一切都是新手,在这里搜索过,我还在拔头发。请温柔一点。我正在使用 Andy Langton 的 show hide 手风琴,它在除 IE 8 之外的所有浏览器中都运行良好(并假设以前的版本)在 IE 8 中单击阅读更多切换会导致下拉文本开始显示一点(看起来像所有的行已写在一行上)然后缩回,肘节保持不变。在这里阅读了一个类似的问题,我将 js 版本号从 jquery/1.3.2 更改为 jquery/1.8.3 这显示了应该做的“隐藏文本”,但是切换链接没有改变,它仍然在“阅读更多”当它应该说“隐藏”时。

我假设我在正确的轨道上解决了问题(尽管会产生不同的问题)所以问题是我应该使用什么版本的 jquery?

Javascript

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.js" type="text/javascript"></script>
<script>
$(document).ready(function () {
    var showText = 'Leer M&aacute;s'; //Read more
    var hideText = 'Ocultar'; //Hide
    var is_visible = false;
    $('.toggle').prev().append(' (<a href="#" class="toggleLink">' + showText + '</a>)');
    $('.toggle').hide();
    $('a.toggleLink').click(function () {
        $(this).toggleClass('visible');
        $(this).html(($(this).hasClass('.visible')) ? hideText : showText);
        $(this).parent().next('.toggle').toggle('slow');
        return false;
    });
});
</script>

HTML

...
<a href="#" class="toggleLink"></a>
<span class="toggle"><br>
<span class= "ticktext"><span>
...
4

2 回答 2

2

你的错误在这里

$(this).html(($(this).hasClass('.visible')) // <-- extra .

你想要的是

$(this).html(($(this).hasClass('visible'))

除非你有一类

class='.visible'

你不这样做是因为你正在切换这$(this).toggleClass('visible');导致

class='visible'

虽然我猜它没有意义,因为它适用于其他浏览器?

它确实解释了为什么它继续阅读更多..因为这总是评估为假 - 因此 showText 将始终显示

$(this).hasClass('.visible')) ? hideText : showText
于 2013-03-22T18:16:47.517 回答
0

由于您使用的是 jquery 1.8 ,因此您必须使用on委托事件来动态添加元素

$(document).on('click','a.toggleLink',function() {
    $(this).toggleClass('visible');
    $(this).html( ($(this).hasClass('.visible')) ? hideText : showText);
    $(this).parent().next('.toggle').toggle('slow');
    return false;
});
于 2013-03-22T18:03:28.270 回答