Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.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
Javascript 使用jQuery offfset定位一个div-代码可以工作,但只适用于一个元素_Javascript_Jquery_Position_Offset - Fatal编程技术网

Javascript 使用jQuery offfset定位一个div-代码可以工作,但只适用于一个元素

Javascript 使用jQuery offfset定位一个div-代码可以工作,但只适用于一个元素,javascript,jquery,position,offset,Javascript,Jquery,Position,Offset,我试图根据另一个元素的偏移位置,使用CSS“top”设置div的位置。这个元素不是相邻的或父/子元素,因此我必须使用javascrip/jQuery 我遇到了以下代码,它非常适合我的第一个元素(从“mark2”检索的偏移位置和为“side2”正确设置的位置,但当我分别复制“mark3”和“side3”的代码时,它不起作用。任一代码块都独立工作,但似乎相互冲突。我重命名了所有变量,但仍然存在冲突 如果有人能对这一点有所了解,我们将不胜感激 <script type="text/jav

我试图根据另一个元素的偏移位置,使用CSS“top”设置div的位置。这个元素不是相邻的或父/子元素,因此我必须使用javascrip/jQuery

我遇到了以下代码,它非常适合我的第一个元素(从“mark2”检索的偏移位置和为“side2”正确设置的位置,但当我分别复制“mark3”和“side3”的代码时,它不起作用。任一代码块都独立工作,但似乎相互冲突。我重命名了所有变量,但仍然存在冲突

如果有人能对这一点有所了解,我们将不胜感激

    <script type="text/javascript">

    window.onload = function(event) {
    //Get
    var p = $("#mark2");
    var something = p.offset();

    //set
    $("#side2").css('top', something.top+'px');

    };

    window.onresize = function(event) {
    //Get
    var p = $("#mark2");
    var something = p.offset();

    //set
    $("#side2").css('top', something.top+'px');

    };
    </script>


    <script type="text/javascript">

    window.onload = function(event) {
    //Get
    var y = $("#mark3");
    var somethingelse = y.offset();

    //set
    $("#side3").css('top', somethingelse.top+'px');

    };

    window.onresize = function(event) {
    //Get
    var y = $("#mark3");
    var somethingelse = y.offset();

    //set
    $("#side3").css('top', somethingelse.top+'px');

    };
    </script>

window.onload=函数(事件){
//得到
var p=$(“#mark2”);
var something=p.offset();
//设置
$(“#side2”).css('top',something.top+'px');
};
window.onresize=函数(事件){
//得到
var p=$(“#mark2”);
var something=p.offset();
//设置
$(“#side2”).css('top',something.top+'px');
};
window.onload=函数(事件){
//得到
变量y=$(“#mark3”);
var somethingelse=y.offset();
//设置
$(“#side3”).css('top',somethingelse.top+'px');
};
window.onresize=函数(事件){
//得到
变量y=$(“#mark3”);
var somethingelse=y.offset();
//设置
$(“#side3”).css('top',somethingelse.top+'px');
};

当您使用=方式设置事件侦听器时,它会覆盖以前的事件侦听器。解决此问题的最佳方法是在jquery事件中使用回调函数,如下所示:

$(window).on('load', function (event) {
  // Code goes here
});

$(window).on('resize', function (event) {
  // Code goes here
});

这应该允许每个事件有多个事件侦听器。

每次执行
window.onload=something
,都会覆盖该属性

您需要一个事件处理程序,并且在使用jQuery时

$(window).on('load resize', function() {
    var p         = $("#mark2");
    var something = p.offset();

    $("#side2").css('top', something.top + 'px');


    var y             = $("#mark3");
    var somethingelse = y.offset();

    $("#side3").css('top', somethingelse.top+'px');
});

工作起来很有魅力!想想我遇到的所有“冲突”jQuery…感谢添加了加载/调整大小以消除冗余代码!