使用了jqueryhtml如下<ul>
<li class="on" onclick="showHistory(0)">xxx</li>
<li onclick="showHistory(1)">xxx</li>
<li onclick="showHistory(2)">xxx</li>
<li onclick="showHistory(3)">xxx</li>
</ul>
而showHistory的定义放在外部引入的js文件中$(document).ready(function(){
var showHistory = function(flag){
$(this).addClass ("on");
$(this).siblings().removeClass("on");
};
});
结果触发onclick时,说showHistory未定义请教
<li class="on" onclick="showHistory(0)">xxx</li>
<li onclick="showHistory(1)">xxx</li>
<li onclick="showHistory(2)">xxx</li>
<li onclick="showHistory(3)">xxx</li>
</ul>
而showHistory的定义放在外部引入的js文件中$(document).ready(function(){
var showHistory = function(flag){
$(this).addClass ("on");
$(this).siblings().removeClass("on");
};
});
结果触发onclick时,说showHistory未定义请教
所以你用 var 定义了函数之后,外面并不知道这个函数
不用 var 的话默认就是全局了
请问里面的$(this)用的对吗
$(this)有问题
在目前的 showHistory 运行上下文内,this 是指 window 对象,因此 $(this) 也就是 jQuery(window),并不是你要处理的对象。
如果要正确处理,你可以把 this 在调用 showHistory 时传过来。
即将其定义改为:
function showHistory(li){
$(li).addClass ("on").siblings().removeClass("on");
};
$(document).ready(function(){
$('ul>li').click(function(){
showHistory(this);
}).first().addClass('on');
});<ul>
<li>xxx</li>
<li>xxx</li>
<li>xxx</li>
<li>xxx</li>
</ul>
有的this是指带需处理的对象 这里又不是 从哪里可以分辨出来呢