Javascript 通过更改选择器重用代码

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) {

我是编程的初学者。我正在寻找一种在外部文件中重用图像预览JQuery代码的方法。 我想做一个表单,其中有多个图像,我想在提交之前预览所有的图像。 我的单幅图像预览代码如下:

$(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);