我的页面右侧有一个表格(id="efficacia"
)。我写了这个JS
脚本,以便左/右点击它
的JavaScript
$("#efficacia").click(function() {
var posizione = $("#efficacia").position();
if(posizione.right != 0) {
$(this).animate({
right: '0'
}, 1000);
} else {
$(this).animate({
right: '-202'
}, 1000);
}
});
CSS
#efficacia {
position: fixed;
right: -202px;
top: 200px;
cursor: pointer;
z-index: 100;
}
我的脚本适用于第一个"点击"然后当我再次点击时它不会在202px的右边shitf。看起来该函数没有进入else statemet。
答案 0 :(得分:3)
position().right
不存在。只有顶部和左侧。
http://api.jquery.com/position/
将您的条件基于left
属性并且它将起作用
答案 1 :(得分:0)
您的代码中出现错误正确:' -202' 。您必须指定正确:' -202px' 。
这是更新后的代码:
$("#efficacia").click(function() {
var right = $(this).css('right');
if(right != "0px") {
$(this).animate({
right: '0px'
}, 1000);
} else {
$(this).animate({
right: '-202px'
}, 1000);
}
});
那是
答案 2 :(得分:0)
如果您想获得所有角落的位置,那么您可以使用getBoundingClientRect()
。它将返回div的bottom,right,left,top,width和height。但是,当然,它会返回从左上角开始的值。
var boundingBox = $(this).get(0).getBoundingClientRect();
console.log(boundingBox.right);
答案 3 :(得分:0)
position
不会返回right property
。
您可以获取right
css属性:
$("#efficacia").click(function() {
var right = parseInt($(this).css('right'));
if(right != 0) {
$(this).animate({
right: '0'
}, 1000);
} else {
$(this).animate({
right: '202'
}, 1000);
}
});
请参阅 DEMO 。
答案 4 :(得分:0)
jQuery.position()
没有为style.right返回值。仅返回
Object{top: somVal, left: somVal}
所以如果你想获得正确的值,那么从样式属性
EG -
$("#efficacia").click(function() {
// var posizione = $("#efficacia").position();//here right is undefined
var right=this.style.right.replace("px", "") * 1;//fetch value of right from style
if(right != 0) {
$(this).animate({
right: '0'
}, 1000);
} else {
$(this).animate({
right: '202'
}, 1000);
}
});