jquery函数,用于选择具有特定类的锚点

时间:2012-02-19 21:27:26

标签: jquery bind anchor

在我的站点地图中,我在表格单元格中有几个锚点......

<table class="table_site">
    <tr>
        <td class="subsite"><a class="l1" href="#">link1</a></td>
        <td class="subsite"><a class="l2" href="#">link2</a></td>
        <td class="subsite"><a class="l3" href="#">link3</a></td>
        <td class="subsite"><a class="l4" href="#">link4</a></td>
    </tr>
</table>

我有一个jquery脚本来调用任何单击的函数切换锚。

<script  type="text/javascript">
    $('a.l1').bind('click', function () {
    //code here
    });
</script>

它根本不起作用

如何调用特定的锚?

谢谢

2 个答案:

答案 0 :(得分:1)

根据您放置javascript的位置,它可能在创建DOM之前运行。只有在调用方法时,绑定才会对DOM中存在的元素有效。你需要在$(文件).ready(function(){})内进行调用;呼叫。这将确保仅在所有DOM都已加载时才发生绑定。

另一个建议是你不使用bind。正如我所提到的,它不会将自身绑定到调用方法后创建的项目。最好使用live()(pre-jQuery1.7)或on()(post-jquery 1.7)。以下是使用的示例:

$(function () { $(".table_site").on("click", "a.l1", function(e) { ... do stuff ...});});

答案 1 :(得分:1)

它的发生因为DOM(文档对象模型)还没有准备好。试试这个片段

$(document).ready(function(){
    $('a.l1').click(function(){
        //code logic goes here
    });
});

如果动态生成锚标记,即通过javascript操作DOM,则使用.on()代替.click()方法
另请注意,如果您使用早于1.7的jQuery版本,则使用.delegate()而不是.on()后者的函数仅适用于jQuery 1.7 +