0

リストから製品を追加および削除するjQuery関数があります。

$("#basketItemsWrap li img").live("click", function (event) {
    $("#notificationsLoader").html('<img src="http://images/loader.gif">');

    var oid = $("#thelist li").attr('id').split('_')[1];

    $.ajax({
        type: "POST",
        url: "http://index.php/action/delete",
        data: {
            officeID: oid,
            action: "delete"
        },
        success: function (theResponse) {

            $("#officeID_" + oid).hide("slow", function () {
                $(this).remove();
            });
            $("#notificationsLoader").empty();
        }
    });
});

私のHTMLコード

<div id="basketItemsWrap">
<ul id="thelist">
<li></li>
<?php echo getBasket(); ?>
</ul>
</div>

html出力は

<li id="officeID_15669">Office 1</li>
<li id="officeID_14903">Office</l 2i>

<li>分割からIDを取得して番号を取得して、値をデータベースに渡すことができるようにします。

    var oid = $("#thelist li").attr('id').split('_')[1];

クリックすると、oid常に未定義です。私のコードの間違いは何ですか?

4

4 に答える 4

2

$("#thelist li")#thelist 内のすべてのリスト要素を選択します。最初の要素は です<li></li>attr('id')最初のものに適用されるため、未定義です。

これをクリック ハンドラー内で使用します。

var oid = $(this).parent("li").attr('id').split('_')[1];
于 2013-03-23T12:39:02.583 に答える
1


私はこれがあなたを助けることを願っています:

$("#basketItemsWrap li img").on("click", function(event) { 

$("#notificationsLoader").html('<img src="http://images/loader.gif">');

     var attrid =  $(this).parent().attr('id'); 
    var oid = attrid.split('_')[1]);

    $.ajax({  
    type: "POST",  
    url: "http://index.php/action/delete",   
    data: {officeID: oid, action: "delete"},  
    success: function(theResponse) {

        $("#officeID_" + oid).hide("slow",  function() {$(this).remove();});
        $("#notificationsLoader").empty();

    }  
    });  

});


私はあなたのためにライブの例を作成します(ただし、ajax機能はありません):
http://jsbin.com/ozepoh/2/

于 2013-03-23T12:55:17.643 に答える
1

使用すると、クリックされたのではなく、リストの最初の がvar oid = $("#thelist li").attr('id').split('_')[1];常に取得されます。idliidli

liを使用してクリックを取得できます$(this).parent()

$("#basketItemsWrap").live("click", 'li img', function (event) {
    $("#notificationsLoader").html('<img src="http://images/loader.gif">');

    var oid = $(this).parent().attr('id').split('_')[1];

    $.ajax({
        type: "POST",
        url: "http://index.php/action/delete",
        data: {
            officeID: oid,
            action: "delete"
        },
        success: function (theResponse) {

            $("#officeID_" + oid).hide("slow", function () {
                $(this).remove();
            });
            $("#notificationsLoader").empty();
        }
    });
});
于 2013-03-23T12:57:01.647 に答える
0

太字のliのため未定義

<div id="basketItemsWrap">
<ul id="thelist">
**<li></li>**
<?php echo getBasket(); ?>
</ul>
</div>

目に見えるように id 属性がないため、 $("#thelist li") はこれを選択し、 $("#thelist li").attr('id') は undefined につながります

于 2013-03-23T12:52:09.047 に答える