2012-03-02 4 views
0

재미있는 것. 어제 (물론 당신의 도움으로) 나는 10 개의 div를 무작위로 어소팅 한 다음 무작위 순서로 페이지에 사라지게하는 함수를 만들었습니다. 오늘 저는 복잡한 세 번째 계층을 추가하고 있습니다. 해당 div 중 3 개를 가져 와서 해당 이미지의 앵커를 적용합니다.jQuery가 다른 앵커의 배열에서 처음 3 div를 감싸는 것

나는 그들이이 퇴색되기 전에 된 div의 무작위로 정렬 된 배열에 앵커의 배열을 적용 할

. 솔직히 말해서, 나는 아직도 시간의 더 나은 부분이 인터넷 검색을 봤는데 어떤이 그것을 쓰는 방법. 당신의 동정심과 전문성에 감사드립니다.

http://jsfiddle.net/danielredwood/MgFj2/4/

감사합니다!

// Fisher-Yates Shuffle 

     function pushRand (array, value, rng) { 
      var j = (rng || Math).random() * (array.length + 1) | 0; 
      array.push(array[j]); 
      array[j] = value; 
      return array.length; 
     } 

    // Create array for fade order 

     function introfade(x) { 
      var o = []; 
      while (x--) { pushRand(o, x); } 
      return o; 
     } 

    // Rearrange divs and fade them in 

     function shuffle() { 
      var b  = $('.box'),   //Box 
       main = $('.main')[0],  //Container 
       arrange = $('<div>'),  //Box elements 
       size = b.size(),   //Amount of boxes 
       fade = introfade(size), //Run introfade() on the amount of boxes 
       boxes = [], 
       i; 

      for (i = size; i--;){ pushRand(boxes, b[i]); } 
      for (i = size; i--;){ main.appendChild(boxes[i]); } 


/************************************ 


     // Apply the array of anchors HERE 
      //Pretend this is the correct syntax for 
      //.wrap different sources within the array 

      $('.box img') 
       [first].wrap('<a href="http://google.com/" />'); 
       [second].wrap('<a href="http://yahoo.com/" />'); 
       [second].wrap('<a href="http://aol.com/" />'); 


************************************/ 


     // Fade them in 
       b.each(function(i) { 
        var c = $(this); 
        setTimeout(function() { 
         c.fadeTo(600, 1); 
        }, fade[i]*60); 
       }); 
      } 

    // Initialize 

     shuffle(); 
+0

어려움이 어디 있는지 확인하십시오. 일단 당신이 선호하는 순서로 배열을 가지고 있다면, 그것의 처음 세 요소를 식별하는 것이 상대적으로 쉽지 않을까? 일단 작업을 완료하면 jquery를 사용할 수 있습니다. 즉, 선택기를 사용하여 이미지를 가져올 수 있어야합니다. 그렇다면 앵커를 적용하는 데 어려움이 있습니까? 문제가 어디 있습니까? –

+0

혼란을 불러 죄송합니다, 벤. 구문이 shuffle()에 의해 반환 된 배열의 첫 번째 $ ('. 상자')를 식별하는 데 어떤 것인지 확실하지 않습니다. 그리고 그들에게 앵커를 붙이십시오 – technopeasant

답변

0

당신의 의사 코드, 난 당신이 다음과 같은 뭔가를 찾고있는 매우 가까운 생각했다 : (

var boxImgs = $('.box img'); 
boxImgs.eq(0).wrap('<a href="http://google.com/" />'); 
boxImgs.eq(1).wrap('<a href="http://yahoo.com/" />'); 
boxImgs.eq(2).wrap('<a href="http://aol.com/" />'); 

를 이것은 당신의 jsFiddle 결과 패널에서 어떤 행동 출력을 변경하지 않은 즉, I 링크로 상자를 클릭 할 수는 없지만 다음 마크 업을 생성합니다. 나는 이미지를 한 번 추측하고있어 의도 한대로 작동 줄에 있습니다

<div class="box" style="opacity: 1;"><a href="http://google.com/"><img src="#"/></a></div> 
<div class="box" style="opacity: 1;"><a href="http://yahoo.com/"><img src="#"/></a></div> 
<div class="box" style="opacity: 1;"><a href="http://aol.com/"><img src="#"/></a></div> 
<div class="box" style="opacity: 1;"><img src="#"/></div> 
<div class="box" style="opacity: 1;"><img src="#"/></div> 
<div class="box" style="opacity: 1;"><img src="#"/></div> 
<div class="box" style="opacity: 1;"><img src="#"/></div> 
<div class="box" style="opacity: 1;"><img src="#"/></div> 
<div class="box" style="opacity: 1;"><img src="#"/></div> 
<div class="box" style="opacity: 1;"><img src="#"/></div> 
+0

당신은 그것을 찍었습니다! 고맙습니다. 나는 너무 가깝다, 바! – technopeasant

+0

'img' 태그가 형제 였을 때 구문이 거의 자리하고있었습니다. '$ ('. box img ')와 같은 것을 사용할 수 있습니다. first() .wrap (...). next() .wrap (...). next() .wrap (...)' . –

0

당신이 링크가 배열하다고 말했습니다 때문에이

var links=['yahoo.com','google.com','bing.com'] 
var boxImgs = $('.box img'); 
for (i=0; i<links.length; i++){ 
    boxImgs.eq(i).wrap('<a href="'+links[i]+'" />'); 
} 
0

도움이 될 방법에 대해 :

$('.box:eq(0) img').wrap('<a href="http://google.com/" />'); 
$('.box:eq(1) img').wrap('<a href="http://yahoo.com/" />'); 
$('.box:eq(2) img').wrap('<a href="http://aol.com/" />'); 

jsFiddle 예제를 업데이트했습니다.