Javascript 为什么$(';a.current';).parent(';li';).addClass(';current';);它不起作用了吗?
为什么Javascript 为什么$(';a.current';).parent(';li';).addClass(';current';);它不起作用了吗?,javascript,parent-child,jquery,jquery-tools,Javascript,Parent Child,Jquery,Jquery Tools,为什么$('a.current').parent('li').addClass('current')和$(this).hasClass('current').parent('li').addClass('current')不工作 aclick事件必须添加li.current 更新:Dropbox已关闭,因此我已更新 有完整的JS $(函数(){ 变量列表=$(“#列表”), elementsPerRow=-1, 循环=真, //查找第一个图像y偏移以查找每行的图像数 topOffset=lis
$('a.current').parent('li').addClass('current')
和$(this).hasClass('current').parent('li').addClass('current')代码>不工作
a
click事件必须添加li.current
更新:Dropbox已关闭,因此我已更新
有完整的JS
$(函数(){
变量列表=$(“#列表”),
elementsPerRow=-1,
循环=真,
//查找第一个图像y偏移以查找每行的图像数
topOffset=list.find('a:eq(0)').offset().top,
numTabs=list.find('li')。长度为1,
电流,新电流;
功能更改选项卡(差异){
//a.jQuery工具选项卡插件的当前设置
current=list.find('a.current').parent('li').addClass('current').index();
newCurrent=(循环)?(current+diff+numTabs+1)%(numTabs+1):current+diff;
如果(循环){
如果(newCurrent>numTabs){newCurrent=0;}
如果(newCurrentnumTabs){newCurrent=numTabs;}
if(newCurrent36&&key.parent()
将只返回元素的直接父元素
如果元素不直接在元素中,.parent('li')
将返回一个空集
您可能需要打电话。
编辑:
是直接家长;这不是你的问题
hasClass
函数返回一个布尔值。第二行错误;需要调用.filter
.parent()
将只返回元素的直接父元素
如果元素不直接在元素中,.parent('li')
将返回一个空集
您可能需要打电话。
编辑:
是直接家长;这不是你的问题
hasClass
函数返回一个布尔值。您的第二行错误;您需要调用.filter
$(this).hasClass('current').parent('li').addClass('current');
当然不起作用,因为hasClass
返回一个布尔值(true/false)不是jQuery对象。调用后无法继续链接
您可以改用过滤器:
$(this).filter('.current').parent('li').addClass('current');
$(this).hasClass('current').parent('li').addClass('current');
肯定不起作用,因为hasClass
返回的是一个布尔值(true/false),而不是jQuery对象。调用该值后,无法继续链接
您可以改用过滤器:
$(this).filter('.current').parent('li').addClass('current');
您似乎只在changeTab函数中使用了这段代码
这似乎只有在使用光标键时才被调用
如果我转到你的演示并使用光标键,橙色高亮显示会移动。如果我单击它,则不会移动,但没有任何代码可以拾取我可以看到的单击
编辑添加:(从评论转换而来,意识到这实际上是我答案的延伸)
在查看了您指向我的tabs代码之后,我仍然不确定它是否在调用changeTab函数中的代码
如果我将选项卡声明更改为
.tabs("#content",{effect:'ajax',history:true, onClick:function(){changeTab(0)}})
然后它将突出显示单击的单元格,但当然不会取消选择旧单元格,因为当前索引已更改
我在jsfiddle.net/bhvYM(一个fork)上对此做了一个粗略的修复。这涉及到在设置新类之前清除所有li.current类。它有点被黑客攻击,所以可能没有完全按照您想要的方式来做(我没有仔细查看当前/新的代码)但希望这是一个开始,可以帮助你让它工作到你想要的地方
我的想法是,这至少让我认为是你问题的重点的li类变得更加重要。如果不是这样,那么我完全没有抓住要点。你似乎只是在changeTab函数中使用了那一点代码
这似乎只有在使用光标键时才被调用
如果我转到你的演示并使用光标键,橙色高亮显示会移动。如果我单击它,则不会移动,但没有任何代码可以拾取我可以看到的单击
编辑添加:(从评论转换而来,意识到这实际上是我答案的延伸)
在查看了您指向我的tabs代码之后,我仍然不确定它是否在调用changeTab函数中的代码
如果我将选项卡声明更改为
.tabs("#content",{effect:'ajax',history:true, onClick:function(){changeTab(0)}})
然后它将突出显示单击的单元格,但当然不会取消选择旧单元格,因为当前索引已更改
我在jsfiddle.net/bhvYM(一个fork)上对此做了一个粗略的修复。这涉及到在设置新类之前清除所有li.current类。它有点被黑客攻击,所以可能没有完全按照您想要的方式来做(我没有仔细查看当前/新的代码)但希望这是一个开始,可以帮助你让它工作到你想要的地方
我的想法是,这至少让你的问题的重点放在了李课上。如果不是这样,那么我完全没有抓住重点。:)您的HTML结构是否正确?可能您的代码没有正确地针对元素。我在问题中添加了JSFIDLE中的HTML。请在问题中发布相关代码。如果链接不再有效,这对回答者以及未来的读者很有帮助。您的HTML结构是否正确?可能您的代码没有针对性正确设置元素。我已将JSFIDLE中的HTML添加到问题中。请在问题中发布相关代码。如果/当链接不再有效时,这对回答者以及未来的读者都很有帮助。$('a')。过滤器('.current')。父项('li')。添加类('current'))
不起作用了。什么东西不起作用了?如果没有一个完整的、有效的示例,很难看出……JSFIDLE不起作用了,部分原因是tabs.js和toolbox.history.js链接不起作用。Dropbox似乎已关闭,所以我更新了完整的js$('a')。过滤器('.current')。父('li')。addClass('cur