如何使用jQuery在输入标记内添加属性?

时间:2014-05-10 11:27:25

标签: javascript

HTML是:

<div class="form-item" id="edit-image-upload-wrapper"><img id="img_prev" src="#">
     <label for="edit-image-upload">Upload Your Picture: <span class="form-required" title="This field is required.">*</span></label>
     <input type="file" name="files[image_upload]" class="form-file required" id="edit-image-upload" size="60"></input>

     <div class="description"><p>You need to provide a passport sized image in jpg/jpeg or png format. The image size has to be 100kb or lower.</p>
    </div>
    </div>

JS代码:

$('#edit-image-upload-wrapper input').prepend('onchange="readURL(this);"');

由于此JS代码输入标记已更改如下:

<input type="file" name="files[image_upload]" class="form-file required" id="edit-image-upload" size="60">onchange="readURL(this);"</input> 

我想改变如下:

 <input type="file" name="files[image_upload]" class="form-file required" id="edit-image-upload" size="60" onchange="readURL(this);"></input> 

我该怎么做?

2 个答案:

答案 0 :(得分:2)

通常,要向元素添加(或更新)属性,您可以使用attr

$('#edit-image-upload-wrapper input').attr('onchange', 'readURL(this);');

由于该属性反映为属性,prop也可以起作用:

$('#edit-image-upload-wrapper input').prop('onchange', 'readURL(this);');

然而,因为你正在使用jQuery,我看不出有任何理由这样做而不是使用正确的event hookup,例如:

$('#edit-image-upload-wrapper input').on('change', function() {
    readURL(this);
});

如果您可以更改readURL函数以使其从this而不是从其第一个参数获取URL,则可以更简单:

// Requires small change to `readURL`
$('#edit-image-upload-wrapper input').on('change', readURL);

附注1:您的input有自己的id值(edit-image-upload),因此这些选择器可能只是#edit-image-upload,而不是#edit-image-upload-wrapper input


附注2:您的HTML无效。 input个元素是"void" elements,它们从不拥有内容,因此您永远不会为它们编写结束标记。例如,你永远不会写</input>不能包含内容(inputbrhr和其他一些内容)的任何元素都不会使用结束标记进行编写。

答案 1 :(得分:0)

使用此:

$('#edit-image-upload-wrapper input').change(function() {
     //.....
});