2016-05-12 97 views
0

我正在處理由CMS生成的表單。該表格在表格中生成,大多數情況下,該表格無法用ID或類來抓取和操作事物。有沒有一種方法來定位前一個元素?

這裏是我的工作的部分的示例:

<tr> 
    <td> 
     <label class="wrappable" id="4354-3-34-2324"> 
      <span class="explicit"> 
       "Give me your answer" 
      </span> 
     </label> 
     <br/> 
     <span> 
      <textarea></textarea> 
     </span> 
     </br> 
    </td> 
</tr> 

我有一個問題,表明上述這一個,並基於該輸入是yes或no我希望能夠隱藏/顯示此位代碼。

我唯一能想到用一個聲明隱藏這個問題的唯一方法就是使用標籤的id,然後以某種方式達到td的水平並將其設置爲none。這樣,我可以根據對上面問題的迴應,輕鬆地將它的可見性與jQuery切換。

有沒有人知道這是可能的,或者是否有更簡單的方法可以解決這個問題?

+0

只爲好奇:到底是''
??什麼 –

+0

你想得到他的父元素,你可以用'.parent()'來做。 –

+0

@MarcosPérezGude我的壞,胖胖的指彈鍵盤!應該只是一個普通的
HisPowerLevelIsOver9000

回答

2

我能想到的隱藏這個問題,全部用一個 聲明的唯一的事情就是用標籤的ID,然後莫名其妙地達到了 水平的TD和設置它的顯示器無法比擬的。這樣,我可以很容易地 根據對上面的問題 的迴應基於jQuery切換其可見性。

如果你想有一個特定元素的直接父,你可以在jQuery中使用parent()功能:

// This would hide the parent element for your specific element 
$('#4354-3-34-2324').parent().hide(); 

如果你需要超越的是,你可以使用closest()功能竄動

// This would hide the closest <td> element for your specific 
$('#4354-3-34-2324').closest('td').hide(); 

既然你要根據你的問題的結果來觸發此,你可以聽您的具體:DOM來通過選擇找一個最近的元素種元素和確定它們何時發生變化,顯示/隱藏相應:

$(document).on('change','textarea',function(){ 
    // When a text area has changed, check it's value 
    var text = $(this).val(); 
    // Use the text here to determine how to handle what you need 
    if(condition){ 
     // Hide the nearest <td> if your condition is met 
     $(this).closest('td').hide(); 
    } 
}); 
+0

謝謝一堆!最接近的'td'選擇就像一個魅力。 – HisPowerLevelIsOver9000

1

click事件爲label本身

$("#4354-3-34-2324").on('click', function(){ 
    $(this).parent().hide(); 
}); 
相關問題