Javascript 使用jQuery offfset定位一个div-代码可以工作,但只适用于一个元素
我试图根据另一个元素的偏移位置,使用CSS“top”设置div的位置。这个元素不是相邻的或父/子元素,因此我必须使用javascrip/jQuery 我遇到了以下代码,它非常适合我的第一个元素(从“mark2”检索的偏移位置和为“side2”正确设置的位置,但当我分别复制“mark3”和“side3”的代码时,它不起作用。任一代码块都独立工作,但似乎相互冲突。我重命名了所有变量,但仍然存在冲突 如果有人能对这一点有所了解,我们将不胜感激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
<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…感谢添加了加载/调整大小以消除冗余代码!