0

我在获取动态添加的列表元素的 ID 时遇到问题。正在添加以下内容:

$(".detail-view button").on("click", function(){
    var noItems = $("ul#cart-items li").eq(0).attr("id");
    var detailID = $(this).attr('id');

    var orderTitle = $("#detail-"+ detailID + " span.order-title").text();
    var insertTitle = $("<li><a href=\"#\" class=\"remove-item\"><img src=\"/assets/images/global/intra_remove_item_btn.png\" /></a>"+ orderTitle +"</li>").attr("id", detailID);

    if(noItems == "emptycart") {
        $("ul#cart-items li#emptycart").replaceWith(insertTitle);
        $("#lp-orderform li:even").addClass("highlight");
    } else {
        $(insertTitle).insertAfter("ul#cart-items li:last");
        $("#lp-orderform li:even").addClass("highlight");
    }
});

它从以下内容更新了我的原始 HTML...

<ul id="cart-items">
    <li id="emptycart">You have no items in your cart.</li>
</ul>

并更新到...

<ul id="cart-items">
    <li id="6955" class="highlight"><a href="#" class="remove-item"><img src="/assets/images/global/intra_remove_item_btn.png"></a>Chicken with Garlic Sauce</li>
    <li id="6966"><a href="#" class="remove-item"><img src="/assets/images/global/intra_remove_item_btn.png"></a>Hunan Shrimp with Black Bean Sauce</li>
    <li id="6965" class="highlight"><a href="#" class="remove-item"><img src="/assets/images/global/intra_remove_item_btn.png"></a>Hunan Pork with Black Bean Sauce</li>
</ul>

当单击 a.remove-item 以删除该列表元素时,我正在尝试获取列表项的 ID。

$("ul#cart-items").live("click", "li a.replace-item", function(){
    var removeItemID = $("li a.replace-item").attr("id");
    alert(removeItemID);
});

但我似乎只得到“未定义”的值。任何投入将不胜感激。谢谢!

4

2 回答 2

1

更新

li点击<a>链接获取 id

$("#cart-items").on("click", "a", function(){
var removeItemID = $(this).parent("li").attr('id');
alert(removeItemID);
});

工作的jsFiddle

获得id点击li使用

$("#cart-items").on("click", "li", function(){
var removeItemID = $(this).attr('id');
alert(removeItemID);
});

工作的jsFiddle


您的li元素没有remove-itemclass ,但a超链接有

如果要检测li项目单击

    $("#cart-items").on("click", "li", function(){
    var removeItemID = $(this).find('a').attr("class");
    alert(removeItemID);
});

工作的jsFiddle

否则,如果你想检测a超链接点击

    $("#cart-items").on("click", "a", function(){
    var removeItemID = $(this).attr("class");
    alert(removeItemID);
});

工作的jsFiddle

于 2013-04-05T16:20:45.770 回答
0

您请求 ID 的元素没有 ID。试试这个代码:

$("ul#cart-items").live("click", "li a.replace-item", function(){
    var removeItemID = $(this).parent().attr("id");
    alert(removeItemID);
});

如果 jQuery 1.7 或更高版本你应该使用 on 而不是 live 像这样:

$("ul#cart-items").on("click", "li a.replace-item", function(){
    var removeItemID = $(this).parent().attr("id");
    alert(removeItemID);
});
于 2013-04-05T16:10:37.287 回答