使用jQuery捕获没有ID的字段上的更改事件

Catch a change event on a field with no ID with jQuery

本文关键字:字段 事件 ID jQuery 使用      更新时间:2023-09-26

我很难使用jQuery,但需要弄清楚这一点才能完成我正在处理的一些代码。

我控制img标记,但不控制输入(这意味着我不能像我希望的那样给它一个ID)。

我需要将img的SRC设置为输入值的值(每当用户更改它时)。

这是HTML:

<div class="my_meta_control metabox">
    <img id="IconImage" src="">
    <p>
        <input type="text" class="mediafield-nn" name="_custom_meta[imgurl]" value=""/>
        <a href="media-upload.php?post_id=2&tab=type&TB_iframe=1" class="mediabutton-nn thickbox button {label:'Insert'}">Add Media</a>
    </p>
</div>

这就是我一直在尝试的,但没有成功。如有任何帮助,我们将不胜感激

$('#IconImage').next().children(":first").change(function() {
    var icon = $(this).val();
    $('#IconImage').attr('src', $(icon));
}

您的选择器很好(尽管我认为有更好的替代方案,如$('#IconImage').next().find("input[type='text']")),但存在一些问题:

  1. 您可能没有在ready()中执行此代码。我建议你这么做
  2. 您引用的是$(icon),而不仅仅是icon。它不是DOM选择器,只是文本
  3. 您没有关闭.change((

以下是一个应用了上述更改的工作JSFiddle。

代码:

$(document).ready(function() {
    $('#IconImage').next().children(":first").change(function() {
        var icon = $(this).val();
        $('#IconImage').attr('src', icon);
    });
});​

这个怎么样:

var container = $('.my_meta_control metabox');
$('input:first', container).change(function(){
  $('img:first', container).attr('src', $(this).val());
});