0

我有以下工作正常:

      $('<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 个超链接中的任何一个。

4

1 回答 1

2

使用事件委托,因为锚是在您的 ajax 调用中动态创建的,或者在 ajax 成功回调中绑定事件(仅用于添加的元素)。如果您的 jquery 版本 >= 1.7 对于早期版本,on语法将起作用

  $("#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 调用期间添加的事件。

于 2013-09-16T18:55:55.687 回答