Leezy__ 2015-06-06 14:14 采纳率: 0%
浏览 1822
已采纳

jquery toggle()切换两个函数时报错

$(function() {
var sideRight = $('#sideright');
$('.side-icon').each(function(index){
$(this).toggle(function(){
changeManyElem(sideRight,{'right':0},30);
},function(){
changeManyElem(sideRight,{'right':-350},30);
})
})
})

function getStyle(obj, attr) {
if (obj.currentStyle) {
return obj.currentStyle[attr];
} else {
return getComputedStyle(obj, false)[attr];
}
}
function changeManyElem(obj, json, spd, fn) {
var flag = true;
clearInterval(obj.timer);
obj.timer = setInterval(function() {
for (var attr in json) {
var icur = 0;
if (attr == 'opacity') {
icur = Math.round(parseFloat(getStyle(obj, attr)) * 100);
} else {
icur = parseInt(getStyle(obj, attr));
}
var speed = 0;
speed = (json[attr] - icur) / 10;
speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);
if (icur != json[attr]) {
flag = false;
}
if (attr == 'opacity') {
obj.style[attr] = (icur + speed) / 100;
} else {
obj.style[attr] = icur + speed + "px";
}
}
if (flag) {
clearInterval(obj.timer);
if (fn) {
fn();
}
}
}, spd);
}

  • 写回答

2条回答

  • danielinbiti 2015-06-06 14:50
    关注
     粗看了一下
     $(function() {
    var sideRight = $('#sideright');//这里获取的是jquery对象
    $('.side-icon').each(function(index){
    $(this).toggle(function(){
    changeManyElem(sideRight,{'right':0},30);//传入的是jquery对象
    },function(){
    changeManyElem(sideRight,{'right':-350},30);
    })
    
    看这里使用
    function getStyle(obj, attr) {//这里obj使用的还是jquery对象,这就不对了,style获取是dom节点,还有像obj.style[attr],这也是dom方式
    if (obj.currentStyle) {
    return obj.currentStyle[attr];
    } else {
    return getComputedStyle(obj, false)[attr];
    }
    
    改一下
    $(this).toggle(function(){
    changeManyElem(sideRight,{'right':0},30);//传入的是jquery对象
    },function(){
    changeManyElem(sideRight,{'right':-350},30);
    })
    这段改成,把sideRight改成sideRight[0],传入dom节点
    $(this).toggle(function(){
    changeManyElem(sideRight[0],{'right':0},30);//
    },function(){
    changeManyElem(sideRight[0],{'right':-350},30);
    })
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog