4

我有以下 jQuery 代码,它定位ul页面上的元素,隐藏li该元素内第三个项目之后的任何项目,ul并附加一个“显示更多!” 单击时显示/切换隐藏列表项的文本链接。

$('ul')
    .find('li:gt(2)')
    .hide()
    .end()
    .append(
        $('<li>Show More!</li>').click( function(){
        $(this).siblings().toggle(500);
        })
    );

脚本功能示例:http: //jsfiddle.net/vf6j5/

以下是我希望脚本执行的操作:在“显示更多!”之后显示隐藏元素时。被点击,我想要“显示更多!” 文本替换为“少显示!” . 这样做会更加用户友好并且更有意义。

关于如何实现这一点的任何想法?

4

6 回答 6

5

http://jsfiddle.net/vf6j5/2/

$('ul')
    .find('li:gt(2)')
    .hide()
    .end()
    .append(
        $('<li>Show More!</li>').click(function() {
            var txt = $(this).text() == "Show More!" ? "Show Less!" : "Show More!";
            $(this).text(txt).siblings(':gt(2)').toggle(500);
        })
    );​
于 2012-12-28T18:29:08.433 回答
5

看看这个:

$('ul')
        .find('li:gt(2)')
         .hide()
        .end()
        .append(
            $('<li class="title">Show More!</li>').click( function(){
            $(this).siblings().toggle(500);
                $(".title").html() === "Show More!"
                    ? $(".title").html("Show Less!")
                    : $(".title").html("Show More!")

            })
        );

工作代码

于 2012-12-28T18:29:18.987 回答
4
$('ul').find('li:gt(2)').hide().end().append(
$('<li>Show More!</li>').click(function() {
    var $this = $(this);
    $this.siblings().toggle(500);
    $this.text(function(i, t) {
        return t === 'Show More!' ? 'Show Less!' : 'Show More!'
    })
}));

http://jsfiddle.net/aGeMp/

于 2012-12-28T18:27:23.200 回答
3
$('ul').find('li:gt(2)')
       .hide()
       .end()
       .append(
         $('<li>Show More!</li>').click(function() {
            $(this).text($(this).prev('li').is(':visible') ? 'Show More' : 'Show Less')
                   .siblings().toggle(500);
         })
       );​

小提琴

于 2012-12-28T18:29:58.827 回答
0

非常简单 - 选择要更改的元素并修改其文本

$('#myButton').text('Show Less!');
于 2012-12-28T18:26:16.910 回答
0

由于您已经this在 click 事件中,只需调用.text()它:

.... .click(function() {
  var that = $(this);
  that.siblings().toggle(500);
  that.text("Show less!");
});
于 2012-12-28T18:27:07.627 回答