查找最接近的输入和设定值

时间:2014-02-02 20:52:14

标签: javascript jquery html

在选择值更改时,我希望按类找到最接近的输入并更改值。

JS

<script type="text/javascript" charset="utf-8">
    $(document).ready(function(){

        $('#doc_service').on('change', function (){

            $.getJSON('\/services\/search-service', {id: $(this).val()}, function(data){

                $(this).closest('.price').val(data);

               //$('.price').val(data);


            });
        });
    });
</script>

我的代码$(this).closest('.price').val(data);没有改变价值,我尝试$('.price').val(data);它的工作,但我有很多输入,并希望更改值只有一个最接近。结构htmltable

HTML

<tr>
    <td>
        <select id="doc_service">
            <option value="volvo">Volvo</option>
            <option value="saab">Saab</option>
            <option value="mercedes">Mercedes</option>
            <option value="audi">Audi</option>
        </select>
    </td>
    <td>
        <input type="text" class="price">
    </td>
</tr>
<tr>
    <td>
        <select id="doc_service">
            <option value="volvo">Volvo</option>
            <option value="saab">Saab</option>
            <option value="mercedes">Mercedes</option>
            <option value="audi">Audi</option>
        </select>
    </td>
    <td>
        <input type="text" class="price">
    </td>
</tr>

1 个答案:

答案 0 :(得分:4)

代码中的

this未引用已更改的元素,您应该缓存该对象。另请注意,closest方法仅选择最接近的匹配父元素。

$('#doc_service').on('change', function (){
    var _this = this;
    $.getJSON('\/services\/search-service', {id: this.value }, function(data) {
        $(_this).closest('td').next().find('.price').val(data);
    });
});

ID必须是唯一的,$('#doc_service')只选择第一个匹配的元素,这里应该使用类。