Jquery加载内容并使用它

时间:2010-12-09 20:59:59

标签: jquery

我尝试将一些外部数据加载到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'),也没有任何事情发生;

我错了吗?

4 个答案:

答案 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');
 });

http://api.jquery.com/live/