我正在动态创建许多 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”元素,因为稍后我会将所有行注入到页面中,并且不能存在 2 个具有相同 id 的元素。这就是为什么我需要使用属性作为选择器,但由于会同时加载许多行,因此我需要确保只调整正在加载的 div 内的“p”元素,而不是其他行分区。我以为变量$div
因为创建了一个闭包,所以在回调中可用。
我究竟做错了什么?如何查询和修改回调中加载的内容?
提前致谢。