Javascript 通过更改选择器重用代码
我是编程的初学者。我正在寻找一种在外部文件中重用图像预览JQuery代码的方法。 我想做一个表单,其中有多个图像,我想在提交之前预览所有的图像。 我的单幅图像预览代码如下:Javascript 通过更改选择器重用代码,javascript,jquery,tags,selector,Javascript,Jquery,Tags,Selector,我是编程的初学者。我正在寻找一种在外部文件中重用图像预览JQuery代码的方法。 我想做一个表单,其中有多个图像,我想在提交之前预览所有的图像。 我的单幅图像预览代码如下: $(function () { Test = { UpdatePreview: function (obj) { // if IE < 10 doesn't support FileReader if (!window.FileReader) {
$(function () {
Test = {
UpdatePreview: function (obj) {
// if IE < 10 doesn't support FileReader
if (!window.FileReader) {
// don't know how to proceed to assign src to image tag
} else {
var reader = new FileReader();
var target = null;
reader.onload = function (e) {
target = e.target || e.srcElement;
$("#preview").attr("src", target.result);
};
reader.readAsDataURL(obj.files[0]);
}
}
};
});
$('#my_div').myfunction();
$(函数(){
测试={
UpdatePreview:函数(obj){
//如果IE<10不支持FileReader
如果(!window.FileReader){
//不知道如何继续将src分配给图像标记
}否则{
var reader=new FileReader();
var目标=null;
reader.onload=函数(e){
target=e.target | | e.src元素;
$(“#预览”).attr(“src”,target.result);
};
reader.readAsDataURL(obj.files[0]);
}
}
};
});
其中,preview
是我的图像标签的id
我是编程的绝对初学者,所以请一步一步地指导我。
谢谢用这种方式定义:
$(function () {
Test = {
UpdatePreview: function (obj, selector) {
// if IE < 10 doesn't support FileReader
if (!window.FileReader) {
// don't know how to proceed to assign src to image tag
} else {
var reader = new FileReader();
var target = null;
reader.onload = function (e) {
target = e.target || e.srcElement;
$(selector).attr("src", target.result);
};
reader.readAsDataURL(obj.files[0]);
}
}
};
});
Test.UpdatePreview(obj, "#preview");
Test.UpdatePreview(obj, "#preview2");
$("#preview").UpdatePreview(obj);
$("#preview2").UpdatePreview(obj);
或将功能附加到原型
,如下所示:
但是,除了重新发明轮子(从),您还可以使用随时可用的代码,例如在加载时预览图像。您需要做的是创建一个只在调用它的对象上工作的函数 下面的函数就是一个很好的例子:
(function($){
$.fn.myfunction = function() {
alert(this.text());
return this;
};
})(jQuery);
此函数将alert()
调用函数的div的文本。例如,假设我们有以下div:
<div id="my_div">Test</div>
生成的警报消息将显示“Test”(请参见中的)
这是因为myfunction
使用关键字来标识调用对象
这也是你需要为你的函数做的:使它成为一个通用函数,这样它可以为每个调用对象工作。然后你简单地用你的个人形象来称呼它,它应该会起作用
更改代码以实现这一点,您将得到类似的结果:
(function($){
$.fn.UpdatePreview = function(obj) {
// if IE < 10 doesn't support FileReader
if (!window.FileReader) {
// don't know how to proceed to assign src to image tag
} else {
var reader = new FileReader();
var target = null;
reader.onload = function (e) {
target = e.target || e.srcElement;
$(this).attr("src", target.result);
};
reader.readAsDataURL(obj.files[0]);
}
}
};
})(jQuery);
(函数($){
$.fn.UpdatePreview=函数(obj){
//如果IE<10不支持FileReader
如果(!window.FileReader){
//不知道如何继续将src分配给图像标记
}否则{
var reader=new FileReader();
var目标=null;
reader.onload=函数(e){
target=e.target | | e.src元素;
$(this.attr(“src”,target.result);
};
reader.readAsDataURL(obj.files[0]);
}
}
};
})(jQuery);
但是,由于您仍然需要确保加载了相应的图像,并且仍然需要创建一个预览图像的div
显示屏,因此此功能还远未完成。与其自己重新发明轮子,不如直接复制现成的代码
例如,显示了一个带有预览的漂亮文件阅读器。您真的只是将我的答案复制粘贴到您的答案中吗?“糟糕的运动!”Jean-Paul嗯,不多,但是是的<代码>:(
我知道你这么做了,因为你复制粘贴了一个打字错误,我在不久之后的回答中更正了。给你的答案一个Plus1
你也应该像我一样通知OP阅读密码。我应该把它复制到你的答案中吗?诚实地说,给你+1。照片:我打电话是对的还是错的。请指点MuhammadSarfrazChughtai,请考虑接受我的回答。
(function($){
$.fn.UpdatePreview = function(obj) {
// if IE < 10 doesn't support FileReader
if (!window.FileReader) {
// don't know how to proceed to assign src to image tag
} else {
var reader = new FileReader();
var target = null;
reader.onload = function (e) {
target = e.target || e.srcElement;
$(this).attr("src", target.result);
};
reader.readAsDataURL(obj.files[0]);
}
}
};
})(jQuery);