有没有办法定位前一个元素?

时间:2016-05-12 16:04:26

标签: jquery html css

我正在处理由我的CMS生成的表单。表格在表格中生成,表格中大部分都没有ID或Classes来抓取和操纵事物。

以下是我正在使用的部分的示例:

<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>

我有一个问题显示在这一个之上,并且基于该输入是否是或者我希望能够隐藏/显示这一部分代码。

我唯一可以想到的是用一个语句隐藏这个问题就是使用标签的id然后以某种方式达到td的一个级别并将其设置为none。这样我就可以根据对上面问题的回答轻松切换jQuery的可见性。

有没有人知道这是否可行,或者我是否可以采用更简单的方法来解决这个问题?

2 个答案:

答案 0 :(得分:2)

  

我唯一想到的就是用一个隐藏这个问题   声明是使用标签的id然后以某种方式达到一个   等级到td并将其显示为无。那样我就可以轻松了   根据对jQuery的响应,使用jQuery切换它的可见性   问题就在上面。

如果你想要特定元素的直接父元素,你可以在jQuery中使用parent()函数:

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

如果您需要超越它,可以使用closest()函数遍历DOM以通过选择器查找最近的元素:

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

由于您希望根据问题的结果触发此问题,因此您可以聆听特定的<textarea>元素并确定它们何时更改并相应地显示/隐藏:

$(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();
     }
});

答案 1 :(得分:1)

捕获click本身的label事件

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