2017-03-06 56 views
0

最后TD我有Django的模板如下:禁止在点击

<table id="members-table" class="table table-hover table-vcenter"> 
    <thead> 
     <tr> 
      <th>Fullname</th> 
      <th>Email</th> 
      <th>Status</th> 
     </tr> 
    </thead> 
    <tbody id="members_list"> 
     {% for member in members %} 
      <tr data-member-row class="members-row" data-member-id={{ member.user_id }}> 
       <td>{{ member.user__first_name }} </td> 
        <td>{{ member.user__email }}</td> 
        <td data-member-status data-member-id={{ member.user_id }}> 
         <form method="POST"> 
          <div class="checkbox" style="float: left;"> 
           <input id="member-status-{{ member.user_id }}" class="magic-checkbox" type="checkbox" {% if member.active %} checked {% endif %}> 
           <label id="status-label-{{ member.user_id }}"> {% if member.active %} Active {% else %} Inactive {% endif %}</label> 
          </div> 
         </form> 
        </td> 
       </tr> 
      {% endfor %} 
     </tbody> 
</table> 

jQuery的片段如下:

$('#members_list').on('click', '[data-member-row]', function (e) { 
    var member_id = e.currentTarget.dataset['memberId']; 
    alert(member_id) 
}) 

因此,我想从表行的data-member-id它被点击。有了这个代码,我得到的是,这是好的,但问题是,我想要防止它,如果table row的最后td被点击。

如果最后一次被点击,我会做其他事情。因此,如果点击最后一个td,我不需要允许这个alert(member_id)执行。

有什么建议吗?

+0

试试这个.. trs = document.getElementById(tableId).getElementsByTagName('tr'); tds = trs [trs.length - 1] .getElementsByTagName('td'); td = tds [tds.length - 1]; – Nevermore

+1

而不是听一个行的点击,听一个单元格点击,然后检查它是否是最后一个之前做任何事情。 – Slime

回答

0
$('#members_list').on('click', '[data-member-row]', function (e) { 
if(!e.currentTarget.nextElementSibling){ 
    doSomethingElse(); return; 
} 
var member_id = e.currentTarget.dataset['memberId']; 
alert(member_id) 
}) 
+0

如果我点击最后一个td,我仍然看到警报。 – Boky

+0

解释你的答案 –

0

尝试使用not:last selector.

$(#member_list td:not(:last-child)).click() 
+0

用这段代码我得到'member_id = undefined' – Boky

+0

尝试在控制台中运行选择器并查看你获得了哪些元素。 $(#member_list td:not(:last-child)) –

0

试试这个..

trs = document.getElementById(tableId).getElementsByTagName('tr'); 
tds = trs[trs.length - 1].getElementsByTagName('td'); 
td = tds[tds.length - 1]; 
console.log(td.text()); 
0

而是在该行的事件侦听器的,有它的电池...

$('#members_list').on('click', 'td', function() { 

    if ($(this).parent().find('td').last().index() === $(this).index()) { 

     // last td was clicked 

    } else { 

     var member_id = $(this).parent().attr('member-id'); 
     alert(member_id) 

    }; 

});