【问题标题】:how to find an element with Jquery .find() that has been loaded with .load()如何使用 Jquery .find() 查找已加载 .load() 的元素
【发布时间】:2015-08-24 13:46:32
【问题描述】:

我需要在一个 div 中加载一个 html 文件,这个 html 里面有很多元素。文件加载后不久,在 div 中,我需要在这个 html 中找到一个特定元素来更改它的值。

我正在使用以下代码:

var div = document.createElement('div'); 
$("#emptySpacee").append(div);       // insert the new div into the DOM
$(div).load('html/page.html', function(){      // load the page 
    $(div).find(".fieldName").val(1234);   //search using class name
});

文档已加载,但使用 jquery .find() 我无法获取元素。

我阅读了很多关于这个问题的帖子,看起来一切都取决于我正在搜索元素但尚未在 DOM 中创建元素的事实。

当加载了 html 文件的所有元素都可以使用 Jquery.find() 函数搜索时,我应该怎么做才能开始搜索?

【问题讨论】:

    标签: javascript jquery html


    【解决方案1】:

    尝试选择$("#emptySpacee").find(div).load() 链接到 ,在.load() 回调中使用$(this).find(".fieldName").val(1234)

    var div = document.createElement('div'); 
    var name = $.now();
    div.className = name;
    $("#emptySpacee").append(div);       // insert the new div into the DOM
    $("#emptySpacee").find("[class=" + name + "]").load('html/page.html', function(){      // load the page 
        $(this).find(".fieldName").val(1234);   //search using class name
    });
    

    【讨论】:

    • @OmarVassalli 尝试将唯一的className 添加到新创建的div 中,通过新创建的className 选择div?查看更新后的帖子。
    • 我尝试使用 $(this).find 并且它可以工作,但我不能使用它,因为如果添加新元素,使用相同的代码,我将有许多带有类 (.filedName) 的元素每次添加新元素时都可以修改。我通过给 thediv 一个不同的 id 尝试了第二种解决方案,但它不起作用。
    • 对于$(this).find(),只有应用了load 的元素内部的元素会受到影响,因此多次使用相同的代码不应相互干扰。尽管我仍然会使用 $(div) 而不是类名构造来与负载一起使用。类名结构似乎是多余的。或者其他快捷方式:$('<div>').appendTo($("#emptySpacee")).load('html/page.html', function(){ $(this).find('.fieldName').val(1234);});
    • 我试图用这种方式循环你的代码: for(i=0;i').appendTo($(" #emptySpace")).load('html/page.html', function(){ $(this).find('.fieldName').val(i); }); } 并且创建的所有 5 个元素都显示 5 的值!
    • 实际上您的代码有效。我错误地使用循环的 var = i 作为加载控件时调用的函数内部的值!!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    相关资源
    最近更新 更多