Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对同一类JQUERY应用/使用具有多个div的函数_Jquery_Function_Class_Arguments - Fatal编程技术网

对同一类JQUERY应用/使用具有多个div的函数

对同一类JQUERY应用/使用具有多个div的函数,jquery,function,class,arguments,Jquery,Function,Class,Arguments,我正在使用一个小脚本来检测两个元素是否冲突 function collision($yo, $obstaculo) { var x1 = $yo.offset().left; var y1 = $yo.offset().top; var h1 = $yo.outerHeight(true); var w1 = $yo.outerWidth(true); var b1 = y1 + h1; var r1 = x1 + w1; var x2 = $obstaculo.offset().left; v

我正在使用一个小脚本来检测两个元素是否冲突

function collision($yo, $obstaculo) {
var x1 = $yo.offset().left;
var y1 = $yo.offset().top;
var h1 = $yo.outerHeight(true);
var w1 = $yo.outerWidth(true);
var b1 = y1 + h1;
var r1 = x1 + w1;
var x2 = $obstaculo.offset().left;
var y2 = $obstaculo.offset().top;
var h2 = $obstaculo.outerHeight(true);
var w2 = $obstaculo.outerWidth(true);
var b2 = y2 + h2;
var r2 = x2 + w2;

if (b1 < y2 || y1 > b2 || r1 < x2 || x1 > r2) return false;
return true;
编辑:我用jfiddle做了一个测试。每一个,但似乎都不起作用。出于某种原因,仅检索las元素,并且它始终返回true:


像往常一样,对不起我糟糕的英语和Thanx

因为$obstaculo中可能有多个对象,所以必须遍历集合中的所有div并检查每个div。使用jQuery,您必须执行以下操作:

function collision($yo, $obstaculo) {
   var x1 = $yo.offset().left;
   var y1 = $yo.offset().top;
   var h1 = $yo.outerHeight(true);
   var w1 = $yo.outerWidth(true);
   var b1 = y1 + h1;
   var r1 = x1 + w1;

   $obstaculo.each(function () {
      var x2 = $(this).offset().left;
      var y2 = $(this).offset().top;
      var h2 = $(this).outerHeight(true);
      var w2 = $(this).outerWidth(true);
      var b2 = y2 + h2;
      var r2 = x2 + w2;
      if (b1 < y2 || y1 > b2 || r1 < x2 || x1 > r2) return false;
   });

   return true;
}
函数冲突($yo,$obstaculo){
var x1=$yo.offset().left;
变量y1=$yo.offset().top;
var h1=$yo.outerHeight(真);
变量w1=$yo.外径(真);
var b1=y1+h1;
var r1=x1+w1;
$obstaculo.每个(函数(){
var x2=$(this).offset().left;
var y2=$(this).offset().top;
var h2=$(this).outerHeight(true);
var w2=$(this).outerWidth(true);
var b2=y2+h2;
var r2=x2+w2;
如果(b1b2 | r1r2)返回false;
});
返回true;
}

请注意,我尚未测试此代码,但希望您可以将其用作示例,它可以让您了解下一步的方向。

我找到了一个调用的解决方案。我的每个函数冲突:

pum = false;
      $(".obstaculo").each(function () { pum = pum || collision($('#character'), $(this), dir) }); 
您可以看到它在这里工作:


晚安

Thanx谢谢你的帮助,我正在尝试使用你的。每个函数但似乎总是正确的,你可以在这个链接中看到我的代码:好的,我找到了一个。每个解决方案,你都可以在这个JFIDLE Thanx中看到。谢谢你的帮助。很抱歉没有尽快回复你,但很高兴你找到了解决方案!
pum = false;
      $(".obstaculo").each(function () { pum = pum || collision($('#character'), $(this), dir) });