2013-09-16 34 views
0

我有正常工作的情況如下:Jquery的Json的工作不正常

 $('<li><a id=' + loc.locId + ' href="/DataEntry" rel="external">' + loc.locName + '</a></li>').appendTo("#btnList"); 

     $("#btnList a").click(function() { 
      alert(siteName); 
      localStorage["dataEId"] = $(this).attr("id"); 
      localStorage["dataESiteName"] = siteName; 
      localStorage["dataESysName"] = sysName; 
      localStorage["dataELocName"] = $(this).text(); 

     } 

當我有以下的,我甚至不能去點擊時顯示一個警告消息:

$.getJSON('/Home/GetLocType', { "locId": loc.locId }, function (result) { 
    var str = JSON.stringify(result); 

    if (str == '1') { 
     $('<li><a id=' + loc.locId + ' href="/DataEntry" rel="external">' + loc.locName + '</a></li>').appendTo("#btnList"); 
    } else { 
     $('<li><a id=' + loc.locId + ' href="/DataEntry/PotableForm" rel="external">' + loc.locName + '</a></li>').appendTo("#btnList"); 
    } 
    $("#btnList").listview('refresh'); 
}); 

$("#btnList a").click(function() { 
    alert(siteName); 
    localStorage["dataEId"] = $(this).attr("id"); 
    localStorage["dataESiteName"] = siteName; 
    localStorage["dataESysName"] = sysName; 
    localStorage["dataELocName"] = $(this).text(); 
} 

請注意有什麼區別。我需要使用基於價值的Json,我需要去兩個超鏈接中的任何一個。

回答

2

使用事件委派,因爲在您的ajax調用中動態創建錨點,或在ajax成功回調中綁定事件(僅用於添加元素)。 on語法將工作,如果你的jQuery版本> = 1.7的早期版本看看live

$("#btnList").on('click', 'a', function() { 
     alert(siteName); 
     localStorage["dataEId"] = $(this).attr("id"); 
     localStorage["dataESiteName"] = siteName; 
     localStorage["dataESysName"] = sysName; 
     localStorage["dataELocName"] = $(this).text(); 

    } 

你的第一個語法的作品,因爲它結合的Click事件到下方存在btnList錨,但它不綁定事件發送給在稍後的時間點在ajax調用期間添加的事件。