我有这个工作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?感谢。
答案 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;
});