jquery函数不能仅在IE7中工作

时间:2011-08-23 06:37:33

标签: jquery internet-explorer-7 event-propagation

我有以下jquery代码:

$(function() {
    $('.sliding-buttons').click(slidingContent);
});

function slidingContent(e) {
    var boxID = $(this).attr('id'),
        boxName = $(this).attr('name');

    $('.sliding-holder#s-h-' + boxName).css({'display' : 'block'}).addClass('open');
    $('.sliding-content#s-c-' + boxName + '-' + boxID).css({'display' : 'block'}).addClass('open');
    $('.sliding-box#s-b-' + boxName).stop(true, true).animate({
        top:'0'
        },'slow');

    e.stopPropagation();
    e.preventDefault();
}

除了IE7之外,它在所有浏览器中都有效。在IE7中,它无法阻止传播。

我正在使用最新版本的jquery(1.6.2),但也试过1.5.2。

我真的很茫然;没有尾随的逗号(我可以看到......),我找不到问题。我真的很感激一些帮助!

MTIA。

2 个答案:

答案 0 :(得分:1)

我只是猜测......你能用这种方式试试......

$(function() {
    $('.sliding-buttons').click(function(e){
         var boxID = $(this).attr('id'),
        boxName = $(this).attr('name');

    $('.sliding-holder#s-h-' + boxName).css({'display' : 'block'}).addClass('open');
    $('.sliding-content#s-c-' + boxName + '-' + boxID).css({'display' : 'block'}).addClass('open');
    $('.sliding-box#s-b-' + boxName).stop(true, true).animate({
        top:'0'
        },'slow');

    e.stopPropagation();
    e.preventDefault();

   });
});

或者你需要以这种方式将事件对象传递给被调用的函数 -

$('.sliding-buttons').click( slidingContent(e) );

答案 1 :(得分:0)

如果slidingContent是一个函数,那么您可能希望将其视为函数,通过调用它来使用括号。此外,由于您在slidingContent函数中引用原始事件,您可能需要将事件作为函数参数传递(虽然我从未使用过像您使用过的事件,因此不确定这一点。

$('.sliding-buttons').click( slidingContent(e) );