jquery用已知的兄弟找到最接近的元素

时间:2013-09-26 12:33:44

标签: jquery

在下面的html代码中..我有一个值选择的下拉框..现在我想填充它旁边的输入框..

我使用以下代码来完成它。但是如何填充相应的文本框..

var ty =$(".edata");
$(ty).children().find(".kt").html('').append('//Appending values to drop down');
for(var item in key_val_pair)
{
    $(ty).children().find(".kt").removeAttr('selected')
    $(ty).children().find(".kt option:eq("+item+")").prop('selected',true);                 
    $(ty).children().find(".kt option:eq("+item+")").closest('.e_val').val(key_val_pair[item])
}

编辑:

 Lets say key_val_pair="{\"1\":\"123\",\"4\":\"456\"}"

HTML

<div class="edata">
    <span class="b1">
        <select class="kt">
            <option value="1">k1</option>
            <option value="2" >k2</option>
        </select>
        <input type="text" placeholder="val" class="e_val"/>
    </span>
    <span class="b1">
        <select class="kt">
            <option value="3">k3</option>
            <option value="4" >k4</option>
        </select>
        <input type="text" placeholder="val" class="e_val"/>
    </span>
</div>

3 个答案:

答案 0 :(得分:1)

这是考虑您希望使用从下拉列表中选择的选项填充最近的输入框:

<script>
     key_val_pair = { 
            "1" : "123",
            "2" : "321",
            "3" : "999",
            "4" : "456" };

     $('.kt').on('change', function() {
         $(this).siblings('.e_val')
                .val( key_val_pair[ $(this).find('option:selected').val() ] );
     });
</script>

小提琴http://jsfiddle.net/3Dtzb/2/

答案 1 :(得分:0)

$(ty).children().find(".kt").next('input').val('you value');

答案 2 :(得分:0)

你的问题在于这一行:

$(ty).children().find(".kt option:eq("+item+")").closest('.e_val').val(key_val_pair[item])

nearest()仅查找祖先,因此您告诉它查找具有该选项的类'e_val'的祖先。你真的想要

$(ty).children().find(".kt option:eq("+item+")").parent().siblings('.e_val').val(key_val_pair[item])

转到(父),然后转到与'e_val'类相关的兄弟姐妹。