我尝试将一些外部数据加载到div中。
var $j = jQuery.noConflict();
$j(document).ready(function(){
$j('#fotos').load('/diary');
});
这很有效,但是当我尝试添加
时$j('.previous_month a').click(function ()
{
$j('#fotos').load('/dairy/10');
});
新数据包含一个类previous_month,其中包含链接。 但是当我点击previous_month div中的一个链接时,即使我替换.load with alert('aazz'),也没有任何事情发生;
我错了吗?
答案 0 :(得分:1)
.click()
处理程序在首次运行时会自行附加。也就是说,当您的代码第一次执行时,找到的任何.previous_month a
都附加了点击处理程序。
当您动态添加此DOM内容时,尚未附加单击处理程序(因为它在首次运行时不存在)。
您正在寻找的是.live()
处理程序。它的执行方式基本相同,但在添加内容时并不在意。
所以你的处理程序变成:
$j('.previous_month a').live('click', function ()
{
$j('#fotos').load('/dairy/10');
});
答案 1 :(得分:0)
像这样使用
$j('.previous_month a').live("click", function ()
{
$j('#fotos').load('/dairy/10');
});
答案 2 :(得分:0)
是的,您需要使用jquery.live来进行绑定。 .click仅绑定dom运行时存在的内容,而不是添加到dom中的内容请参阅http://api.jquery.com/live/
更改
$j('.previous_month a').click(function ()
{
$j('#fotos').load('/dairy/10');
});
TO
$j('.previous_month a').live('click', function() {
// Live handler called.
});
instad将起作用
答案 3 :(得分:0)
您可以通过使用jquery的实时函数来解决这个问题:
$j('.previous_month a').live('click', function()
{
$j('#fotos').load('/dairy/10');
});