2013-05-06 3 views
-3

Я хочу нарисовать линию холста от элемента .class до элемента класса. До сих пор я могу ссылаться на начальные и конечные элементы в классе элементами. First() и elements.first().Jquery каждый цикл после ссылки

Сложность в том, что я хочу использовать quadraticCurveTo, которые хотят начать и конечную точку. Конечная точка - это следующий элемент в классе .class.

$('.myclass').chainlines(); 
$.fn.chainlines = function(){ 
context.moveTo($(this).first().position().left+15,$(this).first().position().top+20); 
$(this).each(function(){ 
next = $(this).next(); 
context.quadraticCurveTo($(this).first().position().left+60, 
$(this).position().top+25,$(next).position().left+15,$(next).position().top+15); 
}); 
}; 

У меня есть пример jsfiddle, который мне нужно расширить в цепочку. см. LINK.

Это не работает для меня.

+2

Я не вижу, что связанная скрипка связана с этим фрагментом кода. Кроме того, этот фрагмент кода недействителен jQuery. –

+3

И что заставляет вас думать, что в jQuery существует фактический метод '.id()', вы пытались '.prop ('id')' – adeneo

+1

@adeneo Идентификатор не является свойством, а атрибутом. – JJJ

ответ

0

Скрипку, кажется, не имеют ничего общего с вопросом ...

Я думаю, что вы ищете что-то вроде этого ..

divs.each(function(idx){ 
    alert(divs[idx].next().attr("id")); 
}) 
+0

Почему бы не использовать 'this' вместо divs [idx]? –

+0

@roasted [Доступ по индексу намного быстрее] (http://jsperf.com/so-hgwr-gu), хотя в этом случае он, вероятно, не заметен. – JJJ

+0

@Juhana вы предлагаете доступ по индексу быстрее, чем использовать ссылочный объект «это», это интересно, я бы проверил его, чтобы посмотреть, что происходит. –

2

Может быть, это то, что вы ищете:

divs.each(function(){ 
    alert($(this).next().get(0).id); 
}) 
0

Я решил свою собственную проблему

$.fn.chainlines = function(){ 
    var divs = $(this); 
    var count = $(this).length; 
    for (var i = 0; i < count; i++) { 
     if((i + 1) < count){ 
      context.moveTo($(divs[i]).position().left+15,$(divs[i]).position().top+20); 
      context.quadraticCurveTo($(divs[i]).position().left+60, 
           $(divs[i]).position().top+35, 
           $(divs[i+1]).position().left+15, 
           $(divs[i+1]).position().top+1);  
      context.stroke(); 
     } 
    } 
}; 
Смежные вопросы