0

我正在尝试根据 .css 的 CSS 来更改图像.slidingDiv。这是我到目前为止的代码:

$(document).ready(function(){
    var a = $('.slidingDiv').css({'display':'none'});
    var b = $('.slidingDiv').css({'display' : 'table-row'});

    if (a > b) {
        a.find('.imgchange img').attr('src','http://illiweb.com/fa/m/tabs_less1.gif');
    } else  if (a<b){
        $('.imgchange img').attr('src','http://illiweb.com/fa/m/tabs_more1.gif');
    }
});​

谁能解释我做错了什么?

编辑:我试图tabs_more1.gif在 div 关闭时显示(display:none;),tabs_less1.gif如果它们打开则显示(display:table-row;

打开和关闭 div 的代码:

$(document).ready(function() {
  $(".slidingDiv").hide();  
$('.secondarytitle').click(function() {  
    $(this).closest('tr').siblings('.slidingDiv').slideToggle(); 
});  
  });
4

2 回答 2

4

第一的

var a = $('.slidingDiv').css({'display':'none'});
var b = $('.slidingDiv').css({'display' : 'table-row'});

这两行针对相同的元素,因此第二行覆盖了第一行的功能。


然后你在比较(a > b)。您对此有何期待?您正在比较两个 jquery 对象(此时具有相同的内容


else你做

('.imgchange img').

你似乎$一开始就错过了..

于 2012-12-20T21:26:30.030 回答
2

只需测试.slidingDiv.

在您的代码中,ab返回 jQuery 本身,而不是数字。 jQuery.fn.css以两个参数或一个对象作为其第一个参数传递,会将 CSS 设置为您的第二个参数的字符串值或对象的值。您正在隐藏您的slidingDiv元素,然后以如此之快的速度再次显示它,眼睛可能不会注意到它。jQuery 被返回,因此您可以将方法链接在一起。

你想做什么取决于你什么时候想做。

如果要在之后更改图像,请在代码中提供一个回调函数作为slideToggle的第二个参数。.slidingDiv它是在停止滑动/动画时执行的函数。在该功能中,您可以在此之后检查您想要的任何内容;保证您的 div 将完全显示或完全隐藏,并且 jQuery 将正确评估当前应用的 CSS 样式到.slidingDiv.

$(document).ready(function() {
    $(".slidingDiv").hide();  
    $('.secondarytitle').click(function() {  
        $(this).closest('tr').siblings('.slidingDiv').slideToggle(undefined, changeImage); 
    });  
});

function changeImage() {
    var slidingEl = $('.slidingDiv'),
        isVisibleBool = slidingEl.is(':visible'),
        imgToChangeEl = $('.imgchange img');

    if (true === isVisibleBool) {
        imgToChangeEl.attr('src','http://illiweb.com/fa/m/tabs_less1.gif');
    } else {
        imgToChangeEl.attr('src','http://illiweb.com/fa/m/tabs_more1.gif');
    }
}

如果要更改之前的图像,请将调用放在changeImage调用之前slideToggle。您可以将回调函数保存到另一天。但是,请注意hide确实接受回调函数作为参数。

于 2012-12-20T21:25:36.317 回答