如何解决jQuery冲突

时间:2013-03-26 17:55:40

标签: ajax jquery

我有几行jQuery代码在点击链接时加载外部页面。

$(document).ready(function() {  
    $(".link").click(function (e) {
    e.preventDefault();      
    var $urlToLoad = $(this).attr('href'); 

    $("#loadarea").load($urlToLoad, function(data){
        $("#loading").fadeIn('fast').fadeOut('fast');
        $("#loadarea").hide().fadeIn('slow');       
        return false;
        });
    });      


}); 

这很好用。但是,当我添加这一行额外代码时,这个页面上必不可少的“$ is undefined”错误显示出来。

我在http://api.jquery.com/jQuery.noConflict/尝试了所有单一技术,但我无法解决冲突。

function goto(id, t){   
    $(".contentbox-wrapper").animate({"left": -($(id).position().left)}, 600);
    $('#slide a').removeClass('active');
    $(t).addClass('active');    
}

我试过var jq = jQuery.noConflict();替换$但这并没有解决问题。

我想我不太了解jQuery来解决这个冲突,我真的很感激任何能够解释发生了什么的人,以便我可以从中学习。

总而言之,它看起来像这样:

<script>

 $(document).ready(function() { 
    $(".link").click(function (e) {
    e.preventDefault();      
    var $urlToLoad = $(this).attr('href'); 

    $("#loadarea").load($urlToLoad, function(data){
        $("#loading").fadeIn('fast').fadeOut('fast');
        $("#loadarea").hide().fadeIn('slow');       
        return false;
        });
    });      


}); 

function goto(id, t){   
    $(".contentbox-wrapper").animate({"left": -($(id).position().left)}, 600);
    $('#slide a').removeClass('active');
    $(t).addClass('active');    
}


</script>

然后我有一个内联代码来激活脚本。

(a class =“active”href =“#”onClick =“goto('#kr',this); return false”&gt; test

奇怪的是,即使出现错误,它也会在第二次点击时触发。

/////////////////////////////////////

通过转换内联javascript来解决冲突/错误。

感谢下面的黄教。

3 个答案:

答案 0 :(得分:1)

$(document).ready(function() {

});

应改写为:

jQuery(function($) {

});

这可能会帮到你。

答案 1 :(得分:1)

我只想从

重写锚点
<a class="active" href="#" onClick="goto('#kr', this); return false">test</a>

<a class="active" href="#kr">test</a>

对于jquery

$('.active').on('click', function() {
    var $this = $(this);        
    var id = $this.attr('href');
    $(".contentbox-wrapper").animate({"left": -($(id).position().left)}, 600);
    $('#slide a').removeClass('active');
    $this.addClass('active');
    return false;
});

答案 2 :(得分:0)

这可能与您包含js文件的顺序有关,请确保jquery是第一个加载的文件。