2011-01-06 84 views

回答

3

a .delegate() handler放在#showList上,因此它会处理动态创建的.show元素的点击次数。

这是你的更新,例如:http://jsfiddle.net/yTkTd/11/

$('#showList').delegate('.show', 'click', function() { 
    showID = $(this).attr("id"); 
    $(".show").fadeOut("slow"); 
    $(this).fadeIn("slow"); 
    $.getJSON('https://api.phish.net/api.js?api=2.0&method=pnet.shows.setlists.get&format=json&apikey=A9E68C2561D7442F041C&callback=?&showid='+showID, function pnet3setlist(data) { 
     $('#showList').append("<div>"); 
     for (i = 0; i < data.length; i++) { 
      var n = data[i]; 
      $('#setList').append("<a class='show' href='#' id='setlist"+n['showid']+"'>"+n['setlistdata']+"</a>"); 
     } 
     $('#showList').append("</div>"); 
    }); 
}); 
0

变化框架jQuery的。目前Mootools是你的图书馆。

+0

嗯,我把它列入我的文件(本地),它不是触发。任何有关为什么可能会发生的见解?我看到 – switz 2011-01-06 22:41:20

+0

在主文章 – switz 2011-01-06 22:45:11

+0

的贴满代码。 Box9是对的。点击事件在锚点位于页面之前添加。 – sissonb 2011-01-06 22:49:10

1

.show元素是在您的点击处理程序附加后动态添加的。您应该使用.live()代替:

$(".show").live("click", function() { 
    alert('hello'); 
}); 

这将具有相同的行为,但会导致jQuery来监听在文档级别的click事件(这是永远存在的),但检查是否源元素是".show"