var jQuery = jQuery.noConflict();不适用于IE7和IE8

时间:2012-02-25 12:22:44

标签: jquery

我的代码是

var jQuery = jQuery.noConflict();
$(document).ready(function() {
var $filterType = $('#filterOptions li.active a').attr('class');
var $holder = $('ul.ourHolder');
var $data = $holder.clone();
  $('#filterOptions li a').click(function(e) {
        $('#filterOptions li').removeClass('active');
        var $filterType = $(this).attr('class');
        $(this).parent().addClass('active');
        if ($filterType == 'all') {
            var $filteredData = $data.find('li');
        } 
        else {
            var $filteredData = $data.find('li[data-type=' + $filterType + ']');

        }
        $holder.quicksand($filteredData, {
            duration: 800,
            easing: 'easeInOutQuad'
        });
        return false;
    });
});

当我评论(// var jQuery = jQuery.noConflict();)noConflict然后这个代码是工作但是 如果没有评论,那么它不适用于ie7和ie8

我也使用$ jQuery = jQuery.noConflict();

2 个答案:

答案 0 :(得分:3)

如果您使用

var jQuery = jQuery.noConflict();

您需要将每个$('...')替换为jQuery('....')

答案 1 :(得分:3)

我经常使用的一个习惯是:将使用jQuery的代码放在一个带有单个参数$的函数中,并使用jQuery对象调用该函数,如下所示:

(function($) {
    $(document).ready(function() {
        var $filterType = $('#filterOptions li.active a').attr('class');
        var $holder = $('ul.ourHolder');
        var $data = $holder.clone();
        $('#filterOptions li a').click(function(e) {
            $('#filterOptions li').removeClass('active');
            var $filterType = $(this).attr('class');
            $(this).parent().addClass('active');
            if ($filterType == 'all') {
                var $filteredData = $data.find('li');
            } 
            else {
                var $filteredData = $data.find('li[data-type=' + $filterType + ']');

            }
            $holder.quicksand($filteredData, {
                duration: 800,
                easing: 'easeInOutQuad'
            });
            return false;
        });
    });
})(jQuery);