-1
        for ( var i = 0; i < contentCount; i++ )
        {
            var farm_id = _newspaperData[i]['farm_id'];

            //console.log(farm_id )
            $('#news_item_' + i).html(
                '<input type="hidden" value="' + farm_id + '" id="#news_item_farm_id_' + i + '" />' +
                '<div class="author" style="position: absolute; top: 2px; left: 2px"></div>' + 
                '<div class="item" style="position: absolute; bottom: 2px; right: 2px">' + 
                    '<div class="icon_' + _newspaperData[i]['product_varname'] + ' bg_64x64" style="position:relative; height: 90px;width: 120px;">' +
                        '<div class="stroke-shadow-black" style="position: absolute; top: 0; left: 10px; font-size: 30px">' + $.number( _newspaperData[i]['product_amount'] ) + 'x</div>' + 
                        '<div class="stroke-shadow-black" style="position: absolute; bottom: 0; right: 10px; font-size: 22px">' + $.number(  _newspaperData[i]['product_price'] ) + ' Coin</div>' + 
                    '</div>' + 
                '</div>' ).click(function()
                {
                    //console.log(farm_id )
                    new Roadside().getOtherRoadside(farm_id)
                });
        }

各要素をクリックすると、 farm_id 値はループの最後と同じになります。

クリック関数が各ループの farm_id 値を取得していないようです

4

1 に答える 1

1

別の関数をラップして、変数を関数に送信します。

for ( var i = 0; i < contentCount; i++ )
{
    var farm_id = _newspaperData[i]['farm_id'];

    //console.log(farm_id )
    $('#news_item_' + i).html(...)
    .click(function(farm_id){
        return function()
        {
            //console.log(farm_id )
            new Roadside().getOtherRoadside(farm_id)
        }
    }(farm_id));
}

詳細については、この SO 投稿をお読みください -複数の AJAX JQuery クエリからの独立したデータの処理

于 2013-09-11T20:11:15.070 に答える