【发布时间】:2012-03-17 13:06:17
【问题描述】:
我有一个这样的页面:
<html>
<head>
<script language="javascript" type="text/javascript" src="jquery-1.4.2.min.js"></script>
<script language="javascript" type="text/javascript" src="jqtouch.js"></script>
<script language="javascript" type="text/javascript" src="myfunctions.js"></script>
[...]
</head>
<body>
[...]
<div id="jqt">
<div id="home" class="current">
<div class="toolbar">
TITLE
</div>
<div class="s-scrollwrapper">
<div class="content">
<div class="container" >
<a href="/thepage.php">LOAD ME 1</a><a href="/thepage.php">LOAD ME 2</a>
</div>
</div>
</div>
</div>
</div>
[...]
</body>
加载的页面内容是这样的,例如:
<div id="AG3456AF002347634">
<div class="toolbar">
TITLE 1
</div>
<div class="s-scrollwrapper">
<div class="content">
<div class="container" >
<div style="display:none" id="myItemId"></div><button onclick="javascript: showItem();"/>
</div>
</div>
</div>
</div>
showItem 是位于 myfunctions.js 中的一个函数,其内容是,例如:
function showItem() {jQuery(jQT.hist[0].hash + ' #myItemId').show();}
所以当我点击按钮时,页面加载后,jQT.hist[0].hash 值为#AG3456AFGG2347634。这在我第一次使用 AJAX 加载页面时工作正常(嗯,当 jQTouch 这样做时)。但是,如果我加载具有相同内容的另一个页面(但主标识符不同),它就不起作用。两次 AJAX 调用后,页面 dom 类似于:
<html>
<head>
<script language="javascript" type="text/javascript" src="jquery-1.4.2.min.js"></script>
<script language="javascript" type="text/javascript" src="jqtouch.js"></script>
<script language="javascript" type="text/javascript" src="myfunctions.js"></script>
[...]
</head>
<body>
[...]
<div id="jqt">
<div id="home">
<div class="toolbar">
TITLE
</div>
<div class="s-scrollwrapper">
<div class="content">
<div class="container" >
<a href="/thepage.php">LOAD ME 1</a><a href="/thepage.php">LOAD ME 2</a>
</div>
</div>
</div>
</div>
<div id="AG3456AF002347634">
<div class="toolbar">
TITLE 1
</div>
<div class="s-scrollwrapper">
<div class="content">
<div class="container" >
<div style="display:none" id="myItemId"></div><button onclick="javascript: showItem();"/>
</div>
</div>
</div>
</div>
<div id="FC00A83473BE33457" class="current">
<div class="toolbar">
TITLE 2
</div>
<div class="s-scrollwrapper">
<div class="content">
<div class="container" >
<div style="display:none" id="myItemId"></div><button onclick="javascript: showItem();"/>
</div>
</div>
</div>
</div>
</div>
[...]
</body>
所以当我单击第二个加载页面上的按钮时,它不起作用,因为 jQuery 没有找到该项目。 jQT.hist[0].hash 的值是正确的,即#FC00A83473BE33457。两个页面上的项目 id #myItemId 相同,这就是使用唯一的包装器 div id 来定位每个加载的项目的原因。
为什么这在第一页上起作用,但在我将其他页面加载到 DOM 时却不起作用??
【问题讨论】:
标签: javascript jquery ajax jqtouch