2015-11-06 51 views
0

我使用jQuery來從被檢查,如果未選中該行,它不應該跳出一排蹦出標籤的名字,但它是上彈出了所有3行如何使用jquery彈出標籤名稱?

HTML代碼:

<table> 
<tr> 
    <td>APPLICATION | </td> 
    <td>ENV | </td> 
    <td>REGION | </td> 
    <td>URL | </td> 
<td><input type="button" value="Edit" class="edit"> 
<input type="button" value="Update" class="update"> 
<input type="reset" value="Reset" class="reset"> </td>  
</tr> 
<tr> 
<td><label class='applabel'>app1</label> <input type="text" class="app" hidden></td> 
    <td>env1 | </td> 
    <td>region1 | </td> 
    <td>url1 | </td> 
    <td><input type="checkbox" class="ed-up"></td> 
</tr> 
<tr> 
    <td><label class='applabel'>app2</label> <input type="text" class="app" hidden></td> 
    <td>env2 | </td> 
    <td>region2 | </td> 
    <td>url2 | </td> 
    <td><input type="checkbox" class="ed-up"></td> 
</tr> 
<tr> 
    <td><label class='applabel'>app3</label> <input type="text" class="app" hidden> </td> 
    <td>env3 | </td> 
    <td>region3 | </td> 
    <td>url3 | </td> 
    <td><input type="checkbox" class="ed-up"></td> 
</tr> 
</table>  

javascript代碼:

$(function() { 

$('.reset').on('click',function() { 
    $(':checkbox').prop('checked',false); 
    $(':text').hide(); 
    $('.applabel').show(); 
}); 

$('.edit').on('click',function() { 
    $('.ed-up').each(function(){ 
     if($('.ed-up').prop('checked') == true) 
     alert($(this).next('.applabel').text()); 

    }); 
}); 

});    

我使用各種方法來遍歷行,但是,想要蹦出我的意思是警告該行只有當複選框被選中

FIDDLE

回答

0

考慮以下幾點:$(this).closest('tr').find('.applabel').text()

$('.edit').on('click',function() { 
    $('.ed-up').each(function(){ 
     if($(this).prop('checked') == true) 
     alert($(this).closest('tr').find('.applabel').text()); 
    }); 
}); 

Updated DEMO


變化

if($('.ed-up').prop('checked') == true) 
//changed to 
if($(this).prop('checked') == true) 

alert($(this).next('.applabel').text()); 
//changed to 
alert($(this).closest('tr').find('.applabel').text()); 
+1

需要很多人,這是我需要學習最多的概念 – Amol

0

您沒有使用.each()傳遞給函數的上下文。

下面的行:

if($('.ed-up').prop('checked') == true) 

只檢查第一匹配.ed-up.checked屬性。您應該使用this

if($(this).prop('checked') == true) 
0

請嘗試此代碼。

$(function() { 
    $('.reset').on('click',function() { 
    $(':checkbox').prop('checked',false); 
    $(':text').hide(); 
    $('.applabel').show(); 
    }); 

    $('.edit').on('click',function() { 
    $('.ed-up').each(function(){ 
     if($(this).prop('checked') == true) 
      alert($(this).closest('tr').find('.applabel').text()); 
    }); 
    }); 
}); 

Fiddle

希望這會幫助你。

+0

當他們已經給出相同的解決方案時,使用其他代碼並不好。但不錯的努力**複製過去**。 – Manwal

+0

@manwal你做了**小錯誤**,我糾正了代碼發佈我的答案。這不是複製過去。 – balachandar

+0

哦,那是什麼? – Manwal

相關問題