我有一个脚本执行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>
如果我点击链接A或B,div id="results"
已填充好,但当我将相同的链接放在点击功能返回的.html
结果之一时,该链接无效且div id “结果”并没有重新加载。
所以我的问题是;为什么那不起作用?根据你在.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>
答案 0 :(得分:0)
试试这个::
$('#results').find('.a').click(function() {
$('#results').html('THIS IS VALUE FROM LINK A <a href="#" class="b">B</a>');
});
$('#results').find('.b').click(function() {
$('#results').html('THIS IS VALUE FROM LINK B');
});
答案 1 :(得分:0)
要详细说明Abhilash的评论,你的点击事件没有被触发的原因是由于事件监听器只被附加到执行onReady时当前存在于DOM中的元素。
.live()是在旧版本的jQuery中引入的 - 现在不赞成使用.on() - 来解决这个问题。它允许您将事件附加到像body这样的静态元素,当click事件传播到body时,它会检查触发事件的原始目标元素与.on()选择器匹配,如果它们匹配则执行处理程序。 / p>
答案 2 :(得分:0)
<html>
<script>
$(document).ready(function(){
$('.a').live("click", function(e) {
e.preventDefault();
$('#results').html('THIS IS VALUE FROM LINK A <a href="#" class="b">B</a>');
});
$('.b').live("click", function(e) {
e.preventDefault();
$('#results').html('THIS IS VALUE FROM LINK B');
});
});
</script>
<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>
使用live()将事件绑定在新创建的元素上。