2

我有一个脚本执行 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 OR Bdiv id="results"填充确定,但是当我将相同的链接放在.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>
4

3 回答 3

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');
    });
于 2012-12-04T09:16:50.083 回答
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() 将事件绑定在新创建的元素上。

于 2012-12-04T09:37:19.290 回答
0

为了详细说明 Abhilash 的评论,您的 click 事件未触发的原因是事件侦听器仅附加到执行 onReady 时 DOM 中当前存在的元素。

.live() 是在旧版本的 jQuery 中引入的——现在不赞成使用 .on()——来解决这个问题。它允许你将事件附加到像 body 这样的静态元素上,当点击事件传播到 body 时,它会检查触发事件的原始目标元素,如果它们匹配,则执行处理程序。

于 2012-12-04T09:22:17.943 回答