使用.parent选择div

时间:2015-04-24 08:22:37

标签: javascript jquery html

我有一个script,只要选择了是单选按钮,它就会显示一个文本区域。我想修改jquery脚本,以便textarea可以在不同的div中,仍然像以前一样被禁用。

通过jquery文档,我看到我可以使用.parent执行此操作,但我无法使用它。

<div class="group">
   <input type="radio" name="choice2" value="yes" />Yes
   <input type="radio" name="choice2" value="no" />No
</div>

<div class="group">
   <textarea rows="4" cols="20"></textarea>
</div>

我该怎么做?或者有更好的方法吗?

编辑:

    $(function () {

    var $choices = $(".group").find(":radio");
    $choices.on("change", function () {
        var $this = $(this);
        var tarea = $this.closest(".group").next(".group").find("textarea");
        if ($this.val() === "yes") {
            tarea.val('');
            tarea.prop('readonly', true);
            tarea.css('background-color', '#EBEBE4');
        } else {
            tarea.prop('readonly', false);
            tarea.css('background-color', '#FFFFFF');
        }
    });
});

4 个答案:

答案 0 :(得分:2)

为每个<textarea>添加了属性&#34;触发&#34;。按名称确定它的触发元素。例如,<textarea data-trigger="choice2">表示<input name="choice2"/>改变了它的目标(灰色/不亮)。

通过这种方式,您可以在页面内的任何位置添加textarea元素而无需担心。

以下是一个示例:http://jsfiddle.net/r0gw8t1b/2/

答案 1 :(得分:1)

var tarea = $this.closest(".group").next(".group").find("textarea");

您可以使用next()来实现这一目标。它找到父group,然后查看直接兄弟并查找textarea

<div class="group">
    <input type="radio" name="choice1" value="yes" />Yes
    <input type="radio" name="choice1" value="no" />No
</div>
<div class="group">
        <textarea rows="4" cols="20"></textarea>
</div>

<强> DEMO

答案 2 :(得分:0)

This jsFiddle展示了如何做到这一点。

$($(this).parent().siblings('div.group')[0]).find('textarea');

在div.group类型的父级兄弟中查找文本区域,然后您可以设置css或您想要设置的属性,如jsFiddle中所示。

答案 3 :(得分:0)

以下代码适用于选择和禁用所需的文本区域:

HTML:

<div class="group">
   <input type="radio" name="choice2" value="yes" />Yes
   <input type="radio" name="choice2" value="no" />No
</div>

<div class="group">
   <textarea rows="4" cols="20"></textarea>
</div>

JQUERY:

$(function () {     
    $( "input[type='radio']" ).click(function () {
        if ($(this).val()=='yes') {
            $('.group textarea').attr('readonly',true); 
            $('.group textarea').css('background-color', '#f1f1f1');
        } else {
            $('.group textarea').attr('readonly',false); 
            $('.group textarea').css('background-color', '#fff');
        }
    });
});