2016-05-12 99 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(); 
}); 
相关问题