2011-01-06 101 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"