jQuery重新加载表,其中包含基于已加载表中数据的新数据

时间:2012-12-04 09:13:13

标签: jquery mysql document-ready

我有一个脚本执行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>

3 个答案:

答案 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()将事件绑定在新创建的元素上。