2017-05-06 76 views
0

请看看这个小提琴 https://jsfiddle.net/shaswatatripathy/y7jqb5hp/12/如何找到具有连接特定类别的TR,并得到各TD的细节 - jQuery的

HTML

<table id="tableID"> 
    <tr onclick="getdetails(this)"> 
    <th>checkbox</th> 
    <th>Company</th> 
    <th>Contact</th> 
    <th>Country</th> 
    </tr> 
    <tr onclick="getdetails(this)"> 
    <td><input name="eachRow" type="checkbox"/> </td> 
    <td>Alfreds </td> 
    <td>Maria </td> 
    <td>Germany</td> 
    </tr > 
    <tr onclick="getdetails(this)"> 
    <td><input name="eachRow" type="checkbox"/> </td> 
    <td>Centro </td> 
    <td>Francisco </td> 
    <td>Mexico</td> 
    </tr> 
    <tr onclick="getdetails(this)"> 
    <td><input name="eachRow" type="checkbox"/> </td> 
    <td>Ernst </td> 
    <td>Roland </td> 
    <td>Austria</td> 


</table> 

CSS

table { 
    font-family: arial, sans-serif; 
    border-collapse: collapse; 
    width: 100%; 
} 

td, th { 
    border: 1px solid #dddddd; 
    text-align: left; 
    padding: 8px; 
} 

.highlightRowSelected 
{ 
    background-color:#e2e2e2; 
} 

Jquery

function getdetails(row) { 
$("#tableID tbody tr").each(function() {   
     $(this).removeClass("highlightRowSelected");   
    });  
    $(row).addClass("highlightRowSelected"); 


     } 

什么修改getdetails(行),这样

1.whenever一排被点击其相应的复选框勾选得到

2,其他行的复选框,可以勾选,但剔不应该是一个连续的点击(重要),显然不应该highlightRowSelected类

  • 如果行被点击,并且具有勾选复选框(由点1),然后点击复选框不应该取消选中该复选框
  • 只允许jQuery的

    +1

    我投票关闭这个,因为它是**过于宽泛**。请编辑该问题,将其限制为具有足够细节的特定问题以确定合适的答案。避免一次询问多个不同的问题。请参阅[如何提问](http://stackoverflow.com/help/how-to-ask)页面以获得澄清此问题的帮助。 –

    回答

    0

    $('#tableID input[type="checkbox"]').on('click', function(event){ 
     
        // if tr has class "highlightRowSelected" do not let the click on the checkbox happen 
     
        if($(this).closest('tr').hasClass('highlightRowSelected')) { 
     
        event.preventDefault(); 
     
        event.stopPropagation(); 
     
        return; 
     
        } 
     
        
     
        // if click on checkbox do not go for click on the <tr> 
     
        // which also happend, because the checkbox is inside <tr> 
     
        event.stopPropagation(); 
     
    }); 
     
    
     
    $('#tableID tr').on('click', function(){ 
     
        if($(this).hasClass('highlightRowSelected')) { 
     
         $(this).find('input[type="checkbox"]').prop('checked', false); 
     
         $(this).removeClass("highlightRowSelected"); 
     
        } else { 
     
         // check if there is already a class highlightRowSelected 
     
         // if so return (means, skip rest of code) 
     
         // so in whole table only one .highlightRowSelected is allowed 
     
         if($(this).closest('table').find('.highlightRowSelected').length >= 1){ 
     
          return; 
     
         } 
     
         $(this).find('input[type="checkbox"]').prop('checked', true); 
     
         $(this).addClass("highlightRowSelected"); 
     
        } 
     
    });
    table { 
     
        font-family: arial, sans-serif; 
     
        border-collapse: collapse; 
     
        width: 100%; 
     
    } 
     
    
     
    td, th { 
     
        border: 1px solid #dddddd; 
     
        text-align: left; 
     
        padding: 8px; 
     
    } 
     
    
     
    .highlightRowSelected 
     
    { 
     
        background-color:#e2e2e2; 
     
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
     
    <table id="tableID"> 
     
        <tr> 
     
        <th>checkbox</th> 
     
        <th>Company</th> 
     
        <th>Contact</th> 
     
        <th>Country</th> 
     
        </tr> 
     
        <tr> 
     
        <td><input name="eachRow" type="checkbox"/> </td> 
     
        <td>Alfreds </td> 
     
        <td>Maria </td> 
     
        <td>Germany</td> 
     
        </tr > 
     
        <tr> 
     
        <td><input name="eachRow" type="checkbox"/> </td> 
     
        <td>Centro </td> 
     
        <td>Francisco </td> 
     
        <td>Mexico</td> 
     
        </tr> 
     
        <tr> 
     
        <td><input name="eachRow" type="checkbox"/> </td> 
     
        <td>Ernst </td> 
     
        <td>Roland </td> 
     
        <td>Austria</td> 
     
    
     
    
     
    </table>

    +0

    所有行获得相同的类highlightRowSelected。总是一行应该得到那个类和复选框tiked – tripathy

    +0

    @tripathy所以你的意思是最大的一行可以得到类“highlightRowSelected”? – caramba

    +0

    是的,先生。正确。谢谢问 – tripathy

    相关问题