2016-04-05 2 views
1

У меня есть таблица, в которой отображаются данные на разных уровнях (родительский, дочерний, внук), когда я нажимаю на родителя, он отображает новые строки, относящиеся к дочернему уровню, и если я нажимаю на дочерний элемент, он отображает третий уровень, как внук с большим количеством строк.Добавить действие к кнопке с jQuery

Что я хочу сделать, это добавить кнопку в каждую запись с символом «+», поэтому, когда я нажму на нее, я увижу второй уровень и переключу эту кнопку от родителя к другому с помощью символа «-» , чтобы имитировать функциональность расширения и сворачивания, я хочу сделать это и для дочернего уровня.

Теперь столбцы расширяются или сжимаются, если я нажимаю на строку, но я хочу сделать это, если я нажму на кнопки, которые я хочу добавить.

Вот мой код:

$('.drillDown tr td:last-child, .drillDown tr th:last-child').hide(); 

$('.drillDown tr td:first-child, .drillDown tr th:first-child').dblclick(function(){ 
    $('.drillDown tr td:last-child, .drillDown tr th:last-child').show(); 

}) 


    $('table.drillDown').each(function() { 

     var $table = $(this); 
     $table.find('.parent').dblclick(function() { 
      console.log("*****Click on Parent"); 
      $(this).nextUntil('.parent', ".child").toggle("fast"); 
      $(this).nextUntil('.parent', ".grandson").hide("fast"); 
     }); 

     $table.find('.child').dblclick(function() { 
      console.log("*****Click on child"); 
      $(this).nextUntil('.child', ".grandson").toggle("fast"); 

     }); 

     var $childRows = $table.find('tbody tr').not('.parent').hide(); 
     $table.find('button.hide').dblclick(function() { 
      $childRows.hide(); 

     }); 
     $table.find('button.show').dblclick(function() { 
      console.log("*****Click on Child"); 
      $childRows.filter('.child').show(); 
     }); 
     $table.find('tr.child').dblclick(function(){ 
      $(this).nextUntil('.child').show() 
     }); 

    }); 

А также моя скрипка с полным примером

https://jsfiddle.net/ny6qcxtd/2/

Спасибо!

ответ

4
changed with following fiddle 

fiddle

+0

Ваша логика идет не так, когда вы нажимаете символ детей. Он отображает - знак вместо знака +. Шаги для получения проблемы 1) нажмите на родительский символ. 2), затем нажмите на дочерний символ. 3), то после clik на родительском символе, чтобы все строки были свернуты. но после этого вы снова нажимаете на родительский символ, отображает дочерний символ - insted из +. проверьте свой jsfiddle. –

+0

@LaljiNakum Спасибо за ваше время, я хотел использовать некоторые причудливые кнопки, но это работает идеально для меня. – kennechu

2

Вы можете добавить действие к кнопке с функцией .click (обработчик) в JQuery

EX.

$("#target").click(function() { 
    alert("Handler for .click() called."); 
}); 

где target это идентификатор вашей кнопки.

+0

Пожалуйста, отметьте его как правильный ответ, если он решить вашу проблему –

2

Посмотрите на этот код, это простой дизайн с более высокой производительностью.
может быть, это поможет вам,

<div class="row"> 
     <div class="col-lg-12 text-center"> 

      <table class="table table condensed drillDown"> 

       <thead> 

        <!--SUB HEADER 2--> 
        <tr style="background-color: #E3E3E3"> 

         <!--SALES--> 
         <th></th> 
         <th style="text-align: center">Categories</th> 
         <th style="text-align: center">LW $</th> 
         <th style="text-align: center">LW</th> 
         <th style="text-align: center">L4 W</th> 
         <th style="text-align: center">L13 W</th> 
         <th style="text-align: center">L52 W</th> 

        </tr> 


       </thead> 

       <tbody> 
        <tr class="parent" style="cursor:pointer"> 
<td style="font-family: arial,sans-serif; font-weight: bold; padding: 0px;font-size: 20px;">+ </td> 

         <td>33 D33 GIRLS DRESS </td> 

         <td>$1,564.90</td> 
         <td>1.5%</td> 
         <td>1.7%</td> 
         <td>6.4%</td> 
         <td>1.1%</td> 


        </tr> 

        <tr class="child" style="background-color: #D8E8B7"> 
<td style="font-family: arial,sans-serif; font-weight: bold; padding: 0px; font-size: 20px;">+</td> 
         <td>05 D05 MOVIES</td> 

         <td>$897.56</td> 
         <td>2.2%</td> 
         <td>1.34%</td> 
         <td>4.7%</td> 
         <td>8.9%</td> 


        </tr> 

        <tr class="grandson" style="background-color: #D8E8FF"> 
<td style="font-family: arial,sans-serif; font-weight: bold; padding: 0px; font-size: 20px;">+</td> 
         <td>05 D05 MOVIES</td> 

         <td>$897.56</td> 
         <td>2.2%</td> 
         <td>1.34%</td> 
         <td>4.7%</td> 
         <td>8.9%</td> 


        </tr> 

        <tr class="child" style="background-color: #D8E8B7"> 
<td style="font-family: arial,sans-serif; font-weight: bold; padding: 0px; font-size: 20px;">+</td> 
         <td>06 D06 BATTERIES</td> 

         <td>$2,673.99</td> 
         <td>1.3%</td> 
         <td>0.7%</td> 
         <td>7.5%</td> 
         <td>3.6%</td> 

        </tr> 

        <tr class="parent" style="cursor:pointer"> 
<td style="font-family: arial,sans-serif; font-weight: bold; padding: 0px; font-size: 20px;">+</td> 
         <td>19 D19 HOME DECOR</td> 

         <td>$1,673.99</td> 
         <td>3.3%</td> 
         <td>5.7%</td> 
         <td>2.5%</td> 
         <td>3.6%</td> 


        </tr> 

        <tr class="child" style="background-color: #D8E8B7"> 
<td style="font-family: arial,sans-serif; font-weight: bold; padding: 0px; font-size: 20px;">+</td> 
         <td>34 D34 LDS WVN TOPS</td> 

         <td>$2,673.99</td> 
         <td>1.3%</td> 
         <td>0.7%</td> 
         <td>7.5%</td> 
         <td>3.6%</td> 

        </tr> 

        <tr class="child" style="background-color: #D8E8B7"> 
<td style="font-family: arial,sans-serif; font-weight: bold; padding: 0px; font-size: 20px;">+</td> 
         <td>72 D72 AUDIO HARDWARE</td> 

         <td>$2,673.99</td> 
         <td>1.3%</td> 
         <td>0.7%</td> 
         <td>7.5%</td> 
         <td>3.6%</td> 

        </tr> 

        <tr class="child" style="background-color: #D8E8B7"> 
<td style="font-family: arial,sans-serif; font-weight: bold; padding: 0px; font-size: 20px;">+</td> 
         <td>72 D72 UNASSIGNED</td> 

         <td>$2,673.99</td> 
         <td>1.3%</td> 
         <td>0.7%</td> 
         <td>7.5%</td> 
         <td>3.6%</td> 

        </tr> 

        <tr class="child" style="background-color: #D8E8B7"> 
<td style="font-family: arial,sans-serif; font-weight: bold; padding: 0px; font-size: 20px;">+</td> 
         <td>87 D87 UNLOCKED PHONES</td> 

         <td>$2,673.99</td> 
         <td>1.3%</td> 
         <td>0.7%</td> 
         <td>7.5%</td> 
         <td>3.6%</td> 

        </tr> 
       </tbody> 
      </table> 

     </div> 
    </div> 
    <!-- /.row --> 

</div> 

теперь вы можете связать простую функцию OnClick с GUID, и добавить такой класс, который заменит ваш + с -, когда пользователь открывает любую строку.
так что нет необходимости связывать кнопки,
, если вам нужна дополнительная помощь, пингуйте меня в комментариях.

+0

Спасибо за ваше время и расположение для дальнейшей помощи, его Awsome! :) – kennechu

+0

ваш приветствуется ... – Bharat

1

Может быть, вы могли бы использовать что-то вроде этого:

$(".classOfButton").click(function() { 
       $(".classOfWhatYouWantToExpand").fadeToggle("slow", "linear") 
      }); 

Так на щелчком кнопки использовать функцию JQuery .fadeToggle(). Просто обратите внимание на то, что ваша цель, и используйте классы или идентификаторы соответственно.

fadeToggle()
jQuery .click()

+1

используя приведенный ниже код Бхарата, вы можете легко связать функции щелчка этих «+» разделов, которые он сделал с помощью функции fadeToggle(). Это тоже приятная анимация. –

+0

Спасибо за ваше время :) – kennechu

+0

Я просто сделал его похожим на порталы Microsoft, здесь это просто демо-версия, но у меня есть более мягкий код ... – Bharat

1
$("#target").click(function() { 
    alert("click event"); 
}); 
$("#target").submit(function() { 
    alert("submit event"); 
}); 
+0

Спасибо за ваше время :) Это очень помогает! – kennechu

1

просто можно связать функцию нажмите на кнопку, см ниже код.

для exa.

$("#dataTable tbody tr").on("click", function() { 
    console.log($(this).text()); 
}); 

для вашего кода он выглядит,

$("#target").on("click", function() { 
console.log($(this).text()); 
}); 
Смежные вопросы