6

jqueryループからのthis場合、次のjavascriptオブジェクトから(特定の'イベント')を削除するのに問題があります。this.each()

WeatherData:

{
    "events":{
        "Birthday":{
            "type":"Annual",
            "date":"20120523",
            "weatherType":"clouds",
            "high":"40",
            "low":"30",
            "speed":"15",
            "direction":"0",
            "humidity":"0"
        },
        "Move Out Day":{
            "type":"One Time",
            "date":"20120601",
            "weatherType":"storm",
            "high":"80",
            "low":"76",
            "speed":"15",
            "direction":"56",
            "humidity":"100"
        }
    },
    "dates":{
        "default":{
            "type":"clouds",
            "high":"40",
            "low":"30",
            "speed":"15",
            "direction":"0",
            "humidity":"0"
        },
        "20120521":{
            "type":"clear",
            "high":"60",
            "low":"55",
            "speed":"10",
            "direction":"56",
            "humidity":"25"
        }
    }
}

これは、.each()ループの縮小バージョンです。

$.each(weatherData.events, function(i){
    if(this.type == "One Time"){
        delete weatherData.events[this];
    }
})
4

2 に答える 2

7

文字列(プロパティ名)が必要なオブジェクトを使用しています。私はあなたが望むと信じています:

$.each(weatherData.events, function(i){
    if(this.type == "One Time"){
        delete weatherData.events[i];
        // change is here --------^
    }
});

...$.eachプロパティ名(たとえば"Move Out Day")をイテレータ関数の最初の引数として渡すためです。これは、として受け入れていますi。したがって、そのプロパティをオブジェクトから削除するには、その名前を使用します。

無償の実例| ソース

于 2012-05-21T07:16:10.823 に答える
1

アイテムへの参照ではなく、アイテムの名前が必要です。コールバック関数のパラメーターを使用します。

$.each(weatherData.events, function(key, value){
  if(value.type == "One Time"){
    delete weatherData.events[key];
  }
});

参照:http ://api.jquery.com/jQuery.each/

于 2012-05-21T07:18:00.187 に答える