jquery变量加不加var问题

sinat_27544981 2016-07-29 09:15:43
/* 右侧下部品牌活动横向滚动效果 */
$(function(){
var index = 0;
$buttonlist = $("#activity-title ul li"); //为什么这里如果为var $buttonlist = $("#activity-title ul li");
$buttonlist.click(function(){
var index = $buttonlist.index(this);
imgSlide(index);
})
})
function imgSlide(index){
$buttonlist.eq(index).addClass("chos") //这里的$buttonlist就不能用了
.siblings().removeClass("chos");
}
...全文
310 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
BuBu高打火机 2016-07-30
  • 打赏
  • 举报
回复
作用域问题。改成这样就OK了,你上面click选定的对象为$(this),调用方法传值时就可以把该对象$(this)传递过去。 或者也可以沿袭你的,把$(this).index()这个序号传递过去,但是这样的话,到那边的方法中还得重新进行一次DOM对象的选取,略麻烦。 改了之后的代码如下:

$(function(){
	var $buttonlist = $("#activity-title ul li");      
	$buttonlist.click(function(){
		imgSlide($(this));
	})
})

function imgSlide(_this){
	_this.addClass("chos")          
	.siblings().removeClass("chos");
}
似梦飞花 2016-07-29
  • 打赏
  • 举报
回复
作用域问题 不加var是全局变量 加var只能在对应的函数内访问 函数外访问不到
jio可 2016-07-29
  • 打赏
  • 举报
回复
不加 var就是全局变量,所有页面都可以访问.$符号并不是jquery的声明变量是你理解错误了
lostuser 2016-07-29
  • 打赏
  • 举报
回复
不加var就被提升成为全局变量了。
youren_zt 2016-07-29
  • 打赏
  • 举报
回复
不加var在严格模式下会报错,要养成习惯加上var。 把var $buttonlist = .... 写在$(function(){...}外面就成全局变量了。下面的函数就能接收到。

87,904

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧