【问题标题】:link not working with jquery链接不适用于 jquery
【发布时间】:2012-11-25 10:39:57
【问题描述】:

可能是一个非常简单的答案,但我似乎找不到可行的解决方案。我正在从 php 搜索脚本创建链接,它会根据查询生成链接。我已经编写了一个示例 jQuery 脚本来根据被单击的标签打开一个 div,但是当我单击链接时,什么也没有发生。我在萤火虫中看不到任何错误,并希望得到 somke 的帮助。谢谢。

更新:添加 html 并将 mailLink 从 id 更改为 class。

jQuery

$("a").click(function(e) {
        e.preventDefault();

        $('.mailShow').fadeIn(1500).html('This is the mailShow div');



    });

PHP

<?php

    while ($row = mysql_fetch_assoc($rsd))

{?>

    <div class="each_rec"><a href="#" class="mailLink"><?php echo $row['name_usr'];?>&nbsp;&nbsp;<?php echo $row['idcode_usr'];?></a></div>

<?php

}

    if($total==0){ echo '<div class="no-rec">No Record Found !</div>';}
?>

HTML

<div id="content">

    <div class="search-background">

        <label><img src="loader.gif" alt="" /></label>

    </div>

       <div id="sub_cont">

        <div class="mailShow"></div>

    </div>

</div>

从 firebug 生成的 HTML

<div class="each_rec"><a href="#" class="mailLink">Demo User&nbsp;&nbsp;DEMO</a></div>

【问题讨论】:

  • 您对每个 &lt;a&gt; 标记使用相同的 ID。不知道是不是和问题有关,但是ID必须是唯一的。
  • 您的 jQuery 代码在文档就绪处理程序中吗?

标签: php javascript jquery


【解决方案1】:

在 jquery 中你有 .mailShow 而在 PHP 中你使用 id="mailLink"。您应该将.mailShow 更改为#mailLink

JSFiddle 用于测试。

【讨论】:

    【解决方案2】:

    JSFIDDLE

    试试这个代码:

    $(document).ready(function () {
        $(document).on("click","a",function(e) {
                e.preventDefault();
    
                $('.mailShow').fadeIn(1500).html('This is the mailShow div');
    
            });
     });
    
    <?php
    
        while ($row = mysql_fetch_assoc($rsd))
    
    {?>
    
    <div class="each_rec"><a href="#" class="mailLink"><?php echo $row['name_usr'];?>&nbsp;&nbsp;<?php echo $row['idcode_usr'];?></a></div>
    
    <?php
    
    }
    
        if($total==0){ echo '<div class="no-rec">No Record Found !</div>';}
    ?>
    

    【讨论】:

    • 为什么这是必要的?他没有动态添加链接。
    • 您的代码是正确的,但它会产生错误,因为他在所有锚元素上使用相同的 ID。
    • ok 返回一些错误?你用我的代码改成php了吗?
    • 是的,但结果还是一样
    • 你能用 jsfiddle.net 创建一个 jsfiddle
    【解决方案3】:

    我看到两个可能的问题: 1.你没有使用$(document).ready();并将您的代码放在其中。然后你需要把上面的代码准备好。 2.您从ajax查询插入链接dinamycaly。因此,您需要改用 jquery 委托。

    【讨论】:

    • 这就是我尝试委托的方式: $("#content #sub_cont .each_rec").delegate("a","click",function() { $('#content #sub_cont .mailShow ').fadeIn(1500).html('这是mailShow div'); });
    • 你把你的代码放入$(document).ready(function() {});了吗?
    • 是的,我有,但仍然没有不同
    猜你喜欢
    • 2014-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-29
    • 2017-06-22
    • 2011-05-26
    相关资源
    最近更新 更多