javascript - 表格行文本 chop

标签 javascript jquery html css

我有一个表,它在行级别具有更多/更少的功能。我需要在表级别包含“全部展开/折叠”选项,这样一次展开所有行会更容易。

在我当前的代码中,行级和表级扩展在单独的情况下工作得很好。

但是当我使用全部展开链接进行扩展时,行级更多/更少链接也应该一起起作用。目前,当单击 Expand All 链接时,行级更多/更少链接仍显示为 More 链接,但它应该会更改为 Less 链接。

这是我的代码,

var minimized_elements = $('.grid_moretext span');

    minimized_elements.each(function(){    
    var t = $(this).text();        
    if(t.length < 55) return;

    $(this).html(
    t.slice(0,55)+'<span>... </span>'+
    '<span class="more_text" style="display:none;">'+ t.slice(55,t.length)+' </span>'
    );
    }); 
    $('a.tr_expand').click(function(event){
        event.preventDefault();
        $(this).parent().siblings().find("span.more_text").toggle();       
                if ($(".tr_expand").text() == "More") {
                    $(".tr_expand").text("Less");
                }
                else {
                    $(".tr_expand").text("More");
                }
    });
    $('a.more', minimized_elements).click(function(event){
        event.preventDefault();
        $(this).hide().prev().hide();
        $(this).next().show();        
    });
    $('a.less', minimized_elements).click(function(event){
    event.preventDefault();
    $(this).parent().hide().prev().show().prev().show();    
    });

    $('a.expand_all').click(function(event){
    event.preventDefault();
    $(this).next().find(".grid_moretext span.more_text").toggle();  
        if ($(".expand_all").text() == "Expand All") {
            $(".expand_all").text("Collapse All");
        }
        else {
            $(".expand_all").text("Expand All");
        }
    });

<强> DEMO

最佳答案

我更新了working fiddle with collapse

我做了以下更改:

使用$(this)设置单击的展开链接文本而不是整个类选择;

 $('a.tr_expand').click(function(event){
            event.preventDefault();
            $(this).parent().siblings().find("span.more_text").toggle(); 
             // console.log($(".tr_expand").text());
                    if ($(this).text() == "More") {
                        $(this).text("Less");
                    }
                    else {
                        $(this).text("More");
                    }

        });

在全部展开按钮中,循环浏览展开链接,如果链接有“更多”文本,则只需触发链接的单击,如果该行已展开,切换将再次折叠它,这不是预期的行为。

$('a.expand_all').click(function(event){
   event.preventDefault();
   $('a.tr_expand').each(function(){
      if($(this).text() == "More" && $('a.expand_all').text() == "Expand All" )
      {
          $(this).trigger('click');
      } 
      else if($(this).text() == "Less" && $('a.expand_all').text() == "Collapse All" )
      {
          $(this).trigger('click');
      } 

    });

    if ($(this).text() == "Expand All") {
         $(this).text("Collapse All");
     }
     else {
         $(this).text("Expand All");
     }
});

关于javascript - 表格行文本 chop ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32880852/

相关文章:

javascript - 用于多个选择选项下拉列表的本地存储

html - Bootstrap 在较小的屏幕上重新排序多列

html - 如何获得每个标题的最后一个 child ?

javascript - MySQL AJAX PHP 通知模块

javascript - 实现全宽 slider

jquery - 我想从 onkeyup 事件的数据库中检索信息,并使用 jquery 将其显示在文本框中

html - 按钮之间的间距相等(水平)

javascript - 数据操作 : How can I append path from my data array?

javascript - 播放时 HTML5 音频声音变大

javascript - 转换后无法访问对象方法