javascript - jQuery:如何从内部加载回调修改加载的内容

标签 javascript jquery html callback load

我正在动态创建许多 div 元素(行)。每行都将具有相同的基本格式,只有文本发生变化。由于行结构很复杂,我试图从静态 html 文件加载一个“基本”div,然后在加载后,用每一行的参数调整一些属性。 (类似于 Android 的 xml 定义的适配器)。我正在使用 jQuery 和 jQuery Mobile。

我多次调用此函数(每行一次)。在每次调用中,我将一个 params 对象作为参数传递,其中包含该行的数据和一个新创建的 div 元素(使用 document.createElement("div") 创建) :

    function loadRow(params, div){  
        var $div = $(div);        

        $div.load("some_page.html [data-custom-role=row]", function(){
            //FIXME Throws error: object is not a function!!
            var nameElement = $div("[data-custom-role=name]");
            nameElement.text(params.name);
        });
    }


此代码在 FIXME 注释下方的第一行中抛出此错误:

Uncaught type Error: object is not a function


源 html 文件 (some_page.html) 的(简化)内容:

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="ISO-8859-1"> 
        </head>
        <body>
            <div data-custom-role="row">
                <p data-custom-role="name"></p>
            </div>
        </body>
    </html>

我要做的是选择新加载的 div 中的“p”元素,并设置文本内容。我不能使用 id 来识别“p”元素,因为稍后我会将所有行注入(inject)页面,并且不能存在 2 个具有相同 id 的元素。这就是为什么我需要使用一个属性作为选择器,但是由于同时加载了很多行,我需要确保我只调整了我正在加载的 div 中的“p”元素,而不是其他行div。我认为变量 $div 在回调中可用,因为创建了一个闭包。

我做错了什么?如何在回调中查询和修改加载的内容?

提前致谢。

最佳答案

您正在引用包含函数但不是函数的 DOM 元素。

您不能使用 $div() , 你需要使用对象的函数 .find()在您的情况下,找到具有属性 data-custom-role=name 的元素

尝试:

   function loadRow(params, div){  
        var $div = $(div);        

        $div.load("some_page.html [data-custom-role=row]", function(){
            $div.find("[data-custom-role=name]").html(params.name);
        });
    }

关于javascript - jQuery:如何从内部加载回调修改加载的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15254228/

相关文章:

javascript - 目前我在悬停时在同一 div 上获取内容,我希望内容应在悬停在第一个 div 上时显示在下一个 div 上

javascript - 在嵌套指令中,为什么我的子指令获取父指令的属性?

javascript - 如何从Jquery中清空隐藏字段值

html - 水平滚动时粘性标题滚动出 View

javascript - 使用 jquery 单击时显示第一项并显示/隐藏其他项

javascript - document.querySelector返回null,但是元素存在

javascript - i18next 本地化和 javascript

c# - jquery 和 ASP.Net AJAX 框架

javascript - 浏览器加载同一张图片 2 次

php - 如何在一周中的特定一天显示特定网页