2016-02-19 2 views
0

Я изо всех сил пытаюсь написать функцию jQuery .each() для цикла, хотя массив, который я создал из объекта Raphael. Я могу сделать это с традиционным JS для цикла:Пытается использовать Query каждый цикл на объекте Raphael

for (var i = 0; i < regions.length; i++) { 
regions[i].node.setAttribute('fill', '#113381'); 
} 

, но когда я пытаюсь это:

$.each(regions, function (index) { 
    $(this).node.setAttribute('fill', '#113381'); 
}); 

Я получаю сообщение об ошибке: TypeError: не определено не является объектом (оценка «$ (это) .node.setAttribute ')

типичный элемент массива выглядит следующим образом:

var someName = rsr.path("M295.499,153.782l-0.77,4.605 l-5.786,1.016l-2.313-2.887l-1.233-3.278l-3.014-0.469l-3.39,1.013l-6.479,6.557l-5.575-0.332l-0.982-0.059l-3.936-2.262 l0.455-0.856l3.019-5.701l-1.623-1.325l2.408-4.141l11.51-0.261l5.212-0.119l-0.54,4.988l2.008,1.326l6.172-0.075L295.499,153.782z M274.037,160.428l2.193,1.402l5.325-5.342l-1.563-0.904L274.037,160.428z").attr({parent: 'someName',fill: '#CCCCCC',stroke: '#FFFFFF',"stroke-width": '0.54',"stroke-miterlimit": '10','stroke-opacity': '1'}).data('id', 'someName'); 
someName.attr({'id': 'someName','name': 'someName'}); 
regions.push(someName); 

Я объявил регионы массива и дра ws мой объект Rapahel. Я был бы признателен за любую помощь, которую я могу получить. Большое спасибо.

+2

Try без упаковки 'this' в функции jQuery' this.node'. (В jQuery нет метода 'node', о чем он жалуется). Или: '$ .each (области, функция (el) {el.node.setAttribute ('fill', '# 113381');});' – Andy

+0

@andy Спасибо, но это не работает. Я все еще получаю сообщение об ошибке - undefined не является объектом – Chris

+1

Хорошо, это работает: '$ .each (области, функция (индекс) { \t this.node.setAttribute ('fill', '# 003300'); }); ' – Chris

ответ

1

Там нет JQuery node метода, который является то, что вы пытаетесь с этим кодом:

$(this).node.setAttribute('fill', '#113381'); 

Вместо этого, используйте:

$.each(regions, function (index, element) { 
    element.node.setAttribute('fill', '#113381'); 
}); 

или:

$.each(regions, function (index, element) { 
    this.node.setAttribute('fill', '#113381'); 
}); 
+1

спасибо большое, что работает для меня – Chris