Jquery nearest()不适用于不同div中的元素

hrs*_*ono -1 javascript jquery

我试图使用closest()获得<input>元件,它在不同的股利.这是标记:

<div class="row">
    <div class="span8">
        <input type="text" disabled="disabled" id="image-name">
    </div>
    <div class="span4">
        <input type="file">
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

这是脚本

$(document).ready(function(){
    $("input:file").change(function (){
       var fileName = $(this).val();
       //Put the file name inside the disabled <input>
       $(this).closest('input:disabled').val(fileName);
    });
});
Run Code Online (Sandbox Code Playgroud)

它没有做任何事情.我试图改变input:disabled#image-name,但仍然无法正常工作.

有解决方案吗

谢谢

sya*_*ani 5

如果你在另一个INPUT元素上有一个id,你为什么要使用最接近的函数?为什么不只是$('#image-name')?最接近的方法不会像你想象的那样工作.最接近的总是上升到DOM树,直到找到匹配.

基于对我的初始建议的评论,您可以通过使用更奇特的jQuery事件绑定器版本来获得DRY:

function handler(e, args) {
    $(e.data.elem).val(fileName);
}

$('input:file').bind('change', { elem: '#image-name' }, handler);
$('#other-input').bind('change', { elem: '#other-field' }, handler);
Run Code Online (Sandbox Code Playgroud)

使用事件数据结构参数化的可重用事件处理程序.