2017-04-20 3 views
0

私は連想配列parentTdsを作成しようとしていますが、私が望むように動作していません。Javeryの連想配列はJqueryオブジェクトでは機能しません

var parentTds = {}; 
var index = 0; 
$.each(clone, function() { 
    var $currentItem = $(selectedActivities[index]); 
    var $currentItemTd = $currentItem.closest('td'); 
    console.log($currentItemTd.get(0)); 
    var borderLeft = 0; 
    console.log(parentTds[$currentItemTd.get(0)]); 
    console.log(parentTds[$currentItemTd]); 
    if (typeof parentTds[$currentItemTd.get(0)] === "undefined") { 
     console.log('NOT OK'); 
     borderLeft++; 
     parentTds[$currentItemTd.get(0)] = $currentItemTd; 
    } else { 
     console.log('OK'); 
    } 
    index++; 
}); 

何らかの理由により、parentTds[$currentItemTd.get(0)]は常に最初に格納されたアイテムを返します。私はNOT OKを数回以上得るべきであるのに対して、ループが実行されるのはちょうど1回目です。問題はparentTds[$currentItemTd.get(0)]そのものと思われます。

どのようなアイデアをお願いしますか?

+1

ヒント:JavaScript *オブジェクト*(「連想配列」ではなく)プロパティ名(キー)は常に文字列です。 '$ currentItemTd.get(0)'は文字列ではありませんが、キーとして使用しようとすると文字列に変換されます。 – nnnnnn

+0

「クローン」と「selectedActivities」に含まれる内容について説明してください。また、この関数の目的はDOMのオブジェクトに親のtd要素を取得しようとしていることです。オブジェクトは親を1つしか持てないため、リストには1つのアイテムしか含めることができません。あなたがテーブルの列にすべての 'td'を取得するつもりでない限り?この質問には、達成しようとしていることをもう少し明確にする必要があります。 –

+0

@nnnnnn:あなたは正しいです。私は関連配列の代わりに配列 '[]'を使用して終わりました。 –

答えて

0

JavaScriptは、たとえばPHPのように寛容ではありません。

if (typeof parentTds[$currentItemTd.get(0)] === "undefined") { 

$currentItemTd.get(0)が0としてevaulatedされる可能性がありますので、参照は常にparentTds[0]

これらの状況では、私は、コードブロックを分割するために使用すると、このような何かである:

を、あなたはこれを使用する場合
var cig = $currentItemTd.get(0); 
if (typeof parentTds[cig] === "undefined") { 
関連する問題