gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 13:13:36 26 4
gpt4 key购买 nike

我正在动态创建许多 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com