如何将javascript内联代码转换为jQuery?

时间:2013-03-26 18:42:28

标签: javascript jquery

我有这个工作jQuery +内联javascript导致与现有jQuery冲突。

<script>
var jq=jQuery.noConflict(); 
function goto(id, t){   
    jq(".contentbox-wrapper").animate({"left": -(jq(id).position().left)}, 600);
    jq('#slide a').removeClass('active');
    jq(t).addClass('active');   
}
</script>
<a class="active" href="#" onClick="goto('#kr', this); return false">
<a class="active" href="#" onClick="goto('#en', this); return false">

(我已经尝试解决冲突,但我相信冲突来自内联javascript。)

如何转换此内联JavaScript?感谢。

3 个答案:

答案 0 :(得分:1)

您可以将其绑定为:

<script>
//var jq=jQuery.noConflict();   
function goto1(id, t){   
    ...
    return false; // return false to prevent the link's default action
}

// means once your DOM is ready, and a.active is available to be bound
$(document).ready(function() { 

    // bind all clicks on a.active to the function 'goto1'
    $('a.active').click(goto1);
});
</script>

goto等变量名称可能会在以后引起混淆。将其更改为goto1

答案 1 :(得分:0)

内联JS(嵌入HTML)难以维护,我建议:

HTML:

<div id="parent"> <!-- or any other parent el. -->
    <a href="#">Anchor</a>
</div>

jQuery的:

(function($){ // remap $ to jQuery

  $(function(){ // DOM ready

    $('#parent').on('click', 'a', function( ev ){
       ev.preventDefault();
       var krPos = $('#kr').position().left;
       $(".contentbox-wrapper").animate({"left": -krPos }, 600);
       $('#slide a').removeClass('active');
       $(this).addClass('active'); 
    });

  });

})(jQuery);

答案 2 :(得分:0)

$('.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;
 });
huangism为我回答了这个问题。 https://stackoverflow.com/users/1058134/huangism