2014-03-04 108 views
-1

我有以下问题。我有一个.one("click")函数,它带有一个自己引发的变量,并且我需要添加一个函数,该函数会在变量达到想要的点时触发。我的意思是,在下面的代码中,我需要在Result变量变为9之后使用连接函数来处理最后一个'last'img和'home'img,这会在它们之间产生一条线,并且我会完成圈。请阅读代码并尝试点击所有img-es,以便您了解我需要达到的目标。提前致谢。 下面的代码:在点击功能里添加非点击功能

$(document).ready(function() { 
    var Result = 0; 

    $('img').one("click", function(){ 
     if($('img.home').length == 0){ 
         $(this).addClass('home'); 
     } 

     if(Result <= 9){ 
      var $elem2 = $('span.last'); 
      var $elem1 = $(this).parent(); 
      $(this).toggleClass('selected'); 

      if ($elem2.length > 0) {  
       connect($elem1[0], $elem2[0], "#0F0", 5); 
      } 
      else { 
       $elem1.addClass('last'); 
      } 

      $('span').removeClass('last'); 
      $elem1.addClass('last'); 
      Result++; 
     } 
    }); 

}); 


function connect(div1, div2, color, thickness) { 
    var off1 = getOffset(div1); 
    var off2 = getOffset(div2); 
      // bottom right 
    var x1 = off1.left + off1.width; 
    var y1 = off1.top + off1.height; 
      // top right 
    var x2 = off2.left + off2.width; 
    var y2 = off2.top; 
      // distance 
    var length = Math.sqrt(((x2-x1) * (x2-x1)) + ((y2-y1) * (y2-y1))); 
     distanz += parseInt(length); 
      // center 
    var cx = ((x1 + x2)/2) - (length/2); 
    var cy = ((y1 + y2)/2) - (thickness/2); 
      // angle 
    var angle = Math.atan2((y1-y2),(x1-x2))*(180/Math.PI); 
      // make hr 
    var htmlLine = "<div style='padding:0px; margin:0px; height:" + thickness + "px; background-color:" + color + "; line-height:1px; position:absolute; left:" + cx + "px; top:" + cy + "px; width:" + length + "px; -moz-transform:rotate(" + angle + "deg); -webkit-transform:rotate(" + angle + "deg); -o-transform:rotate(" + angle + "deg); -ms-transform:rotate(" + angle + "deg); transform:rotate(" + angle + "deg);' />"; 
htmlLine = $(htmlLine); 

    $('body').append(htmlLine); 
    return htmlLine; 
} 


function getOffset(el) { 
    var x = 0; 
    var y = 0; 
    var w = el.offsetWidth|0; 
    var h = el.offsetHeight|0; 
    while(el && !isNaN(el.offsetLeft) && !isNaN(el.offsetTop)) { 
      x += el.offsetLeft - el.scrollLeft; 
      y += el.offsetTop - el.scrollTop; 
      el = el.offsetParent; 
     } 
    return { top: y, left: x, width: w, height: h }; 
} 

的jsfiddle:http://jsfiddle.net/CDQhX/4/

我想执行的connect(家庭和跨度图像)的最后一行完成后,结果是9这不能内部完成点击功能,因为我没有点击任何地方来触发它。我的知识不会让我解决问题。所以我感谢任何帮助。我会很高兴收到答案。

+0

你的意思是难以理解 – sanjeev

+0

当图像被点击时,结果肯定只能达到9,所以它不会在这之前开火,所以为什么不在9点击火呢? – Pete

+0

作为@Pete建议,当结果是9 –

回答

0

首先,你是什么意思,你没有点击任何地方,你希望它点击最后一次img时执行。难道你不能只是检查img是否最后被点击,并执行你所需要的?

此外,在另一方面,你可以尝试setTimeoutsetInterval如下所述:http://www.w3.org/TR/2011/WD-html5-20110525/timers.html

因此,举例来说,你可以做这样的事情:

setInterval(function() { 
    //do your thing 
}, 500); 

将执行功能每500毫秒,所以你可以用它来定期检查你的变量。

+0

我在寻找的东西要容易得多,只是我无法弄清楚。您可以在最后的评论中看到图片,以更好地理解它。不管怎么说,还是要谢谢你 :) – user3095198