2016-08-17 73 views
1

我有一個表格,將有幾行。在一列中有一個鏈接(a欄)。在第二欄中,有字符串「是」或「否」(b欄)。基於另一個元素的值禁用元素的網址

如果b列中的某個單元格顯示「否」,我希望單元格上的鏈接直接位於列a中的左側以變爲禁用狀態。

我正在使用.each()遍歷列b中的每個td,以查看值是「是」還是「否」。看起來好像即使列b中的單元格爲「是」,它仍將禁用(重命名)匹配單元上的鏈接。我錯過了什麼?

$(document).ready(function() { 
 

 
    $("td.regFull").each(function() { 
 

 
    console.log($(this).text()); 
 
    if($(this).text() !== 'No') { 
 
     $('td.regLink a').replaceWith('Closed'); 
 
    } 
 
    
 
    }); 
 

 
});
td { 
 
    border: 1px solid black; 
 
    padding: 5px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table> 
 
    <tr> 
 
    <th>Link</th> 
 
    <th>Registration Open</th> 
 
    </tr> 
 
    <tr> 
 
    <td class="regLink"> 
 
     <a href="#">Register</a> 
 
    </td> 
 
    <td class="regFull"> 
 
     No 
 
    </td> 
 
    </tr> 
 
    <tr> 
 
    <td class="regLink"> 
 
     <a href="#">Register</a> 
 
    </td> 
 
    <td class="regFull"> 
 
     Yes 
 
    </td> 
 
    </tr> 
 
</table>

回答

1

我的建議是:

爲了禁用鏈接,您可以刪除href屬性。

要選擇你們可以減少至一個線的所有鏈接:

$("td.regFull:contains('No')").siblings('td.regLink').children('a').removeAttr('href') 

的片段:

$(function() { 
 
    
 
$("td.regFull:contains('No')").siblings('td.regLink').children('a').removeAttr('href').text('Closed'); 
 

 
});
td { 
 
    border: 1px solid black; 
 
    padding: 5px; 
 
}
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script> 
 

 
<table> 
 
    <tr> 
 
     <th>Link</th> 
 
     <th>Registration Open</th> 
 
    </tr> 
 
    <tr> 
 
     <td class="regLink"> 
 
      <a href="#">Register</a> 
 
     </td> 
 
     <td class="regFull"> 
 
      No 
 
     </td> 
 
    </tr> 
 
    <tr> 
 
     <td class="regLink"> 
 
      <a href="#">Register</a> 
 
     </td> 
 
     <td class="regFull"> 
 
      Yes 
 
     </td> 
 
    </tr> 
 
    <tr> 
 
     <td class="regLink"> 
 
      <a href="#">Register</a> 
 
     </td> 
 
     <td class="regFull"> 
 
      No 
 
     </td> 
 
    </tr> 
 
    <tr> 
 
     <td class="regLink"> 
 
      <a href="#">Register</a> 
 
     </td> 
 
     <td class="regFull"> 
 
      Yes 
 
     </td> 
 
    </tr> 
 
</table>

1

代替此行的

$( 'td.regLink一個')replaceWith( '封閉')。

讓它作爲最接近的元素

$(本).closest( 'td.regLink一個')replaceWith( '封閉')。

1
  1. 你要修剪的.regFull內容在刪除空間的條件。

  2. 進入到父TR然後選擇裏面.regLink鏈接:

    $(this).parents('tr').find('.regLink a').replaceWith('Closed'); 
    
  3. 如果在B列單元格說「不」,我想對細胞直接向左鏈接它在列a中成爲殘疾人。

    所以你必須扭轉你的條件從!=====的運營商。

希望這會有所幫助。

$(document).ready(function() { 
 

 
    $("td.regFull").each(function() { 
 

 
    console.log($(this).text().trim()); 
 

 
    if($(this).text().trim() === 'No') { 
 
     $(this).parents('tr').find('.regLink a').replaceWith('Closed'); 
 
    } 
 

 
    }); 
 

 
});
td { 
 
    border: 1px solid black; 
 
    padding: 5px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table> 
 
    <tr> 
 
    <th>Link</th> 
 
    <th>Registration Open</th> 
 
    </tr> 
 
    <tr> 
 
    <td class="regLink"> 
 
     <a href="#">Register</a> 
 
    </td> 
 
    <td class="regFull"> 
 
     No 
 
    </td> 
 
    </tr> 
 
    <tr> 
 
    <td class="regLink"> 
 
     <a href="#">Register</a> 
 
    </td> 
 
    <td class="regFull"> 
 
     Yes 
 
    </td> 
 
    </tr> 
 
</table>

相關問題