【发布时间】:2012-12-04 09:13:13
【问题描述】:
我有一个脚本执行 mysql 查询并使用
填充表 $('#results').html(returnData);
mysql 结果包含应该可以点击并重新加载到同一个表中的数据(替换之前的查询)。
化简归一化,下面的代码行不通:
<head>
<script>
$(document).ready(function() {
$('.a').click(function() {
$('#results').html('THIS IS VALUE FROM LINK A <a href="#" class="b">B</a>');
});
$('.b').click(function() {
$('#results').html('THIS IS VALUE FROM LINK B');
});
});
</script>
</head>
<body>
<div id="results">THIS WILL BE REPLACED WITH VALUE FROM LINK A OR B</div><BR>
<a href="#" class="a">LINK A</a><BR>
<a href="#" class="b">LINK B</a>
如果我单击 LINK A 或 B,div id="results" 会填充 OK,但是当我将相同的链接放置在单击函数返回的 .html 结果之一中时,该链接不起作用,并且 div id“results”为不会重新加载。
所以我的问题是;为什么那行不通?以及根据您在已从.html() 传递的表格内单击的内容重新加载同一个表格的最佳方法是什么?我不想将点击的值传递到新页面。
更新: 这将使用 .on()
<script>
$(document).ready(function(){
$('body').on('click', '.a', function() {
$('#results').html('THIS IS VALUE FROM LINK A <a href="#" class="b">B</a>');
});
$('body').on('click', '.b', function() {
$('#results').html('THIS IS VALUE FROM LINK B');
});
});
</script>
</head>
<body>
<div id="results">THIS WILL BE REPLACED WITH VALUE FROM LINK A OR B</div><BR>
<a href="#" class="a">LINK A</a><BR>
<a href="#" class="b">LINK B</a>
【问题讨论】:
-
你试过.on()方法吗?
-
换句话说,如果您将
$('.a').click()更改为$('.a').on('click', function(){}),事情可能会开始像魔术一样工作...... :-) -
我不确定这是否会起作用,如果您使用 .live() 它可能会起作用,但这是不推荐使用的功能。您需要使用类似 $('body').on('click', '#results .a', function(){});
-
如果您查看我的其他评论,您会发现您使用了错误的语法。您对 .on() 的使用是将侦听器附加到 DOM 中已存在的链接。您需要使用我提供的语法,您附加 .on() 的元素必须是您尝试单击的元素的父元素,因为事件如何在 DOM 树上传播('body' 是一个常见的捕获所有父元素)
标签: jquery mysql document-ready