1

我有这个工作的 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?谢谢。

4

3 回答 3

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.

于 2013-03-26T18:44:01.840 回答
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);
于 2013-03-26T18:48:45.837 回答
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;
 });

黄教为我解答。 https://stackoverflow.com/users/1058134/huangism

于 2013-03-26T19:34:08.300 回答