Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jquery最接近并查找不';好像不行_Javascript_Jquery_Html_Find_Closest - Fatal编程技术网

Javascript Jquery最接近并查找不';好像不行

Javascript Jquery最接近并查找不';好像不行,javascript,jquery,html,find,closest,Javascript,Jquery,Html,Find,Closest,这是我的密码。我无法让jquery代码正常工作 HTML: 我使用以下代码触发函数: $("#headerImage").change(readURL); imagePrev是一个base64数据。这很有效,因为当我尝试 $("#img_url").attr('src', imagePrev); 图像将被加载 但是我想使用.closest或.find或.sibbins或任何必要的代码,这样我就可以找到最近的img标记并替换其src attr。问题在于this变量,一旦执行进入$(reader

这是我的密码。我无法让jquery代码正常工作

HTML:

我使用以下代码触发函数:

$("#headerImage").change(readURL);
imagePrev
是一个base64数据。这很有效,因为当我尝试

$("#img_url").attr('src', imagePrev);
图像将被加载


但是我想使用.closest或.find或.sibbins或任何必要的代码,这样我就可以找到最近的img标记并替换其src attr。

问题在于
this
变量,一旦执行进入
$(reader).load()
,则
this
变量的值会更改

使用以下命令

function readURL(e){
    $this = $(this);
    if (this.files && this.files[0]){
        var reader = new FileReader();
        $(reader).load(function(e) {
            imagePrev = e.target.result;
            var imgElement = $this.siblings('img');
            imgElement.attr('src', imagePrev);
        });
        reader.readAsDataURL($this[0].files[0]);  
    } 
};

请构建一个完整的可复制示例。最好是在编辑问题时使用可用的代码片段工具。缺少的主要部分是如何调用js代码。jquery代码在哪里?上下文中的“this”是什么?添加包含它的代码。。。知道“这个”指的是什么是很重要的。噢,很好。成功了。你能解释一下它为什么起作用吗?谢谢。@RJDO问题在于
this
变量,一旦执行进入
$(reader).load()
,则
this
变量的值将发生变化。执行
$this.slides('img')会更好,不会在DOM中上下波动;)@事件侦听器中的RJDO回调总是(我很确定)更改上下文(这一点)。将类似
var=this
的内容置于这样的结构之外以保持对outter contextYeah的引用是一种习惯用法。谢谢你告诉我。我将代码更改为.sibbins():D
$("#img_url").attr('src', imagePrev);
function readURL(e){
    $this = $(this);
    if (this.files && this.files[0]){
        var reader = new FileReader();
        $(reader).load(function(e) {
            imagePrev = e.target.result;
            var imgElement = $this.siblings('img');
            imgElement.attr('src', imagePrev);
        });
        reader.readAsDataURL($this[0].files[0]);  
    } 
};