Javascript id搜索仅适用于第一个元素
我有一个街区:Javascript id搜索仅适用于第一个元素,javascript,jquery,Javascript,Jquery,我有一个街区: <div class="col-1-4 local_links"> <table> <tr> <td> <a href="#user_profile">User Profile</a><div class="arrow-selected"></div> <
<div class="col-1-4 local_links">
<table>
<tr>
<td>
<a href="#user_profile">User Profile</a><div class="arrow-selected"></div>
</td>
</tr>
<tr>
<td>
<a href="#dashboard">Dashboard</a> </td>
</tr>
<tr>
<td>
<a href="#change_password">Change Password</a>
</td>
</tr>
</table>
</div>
[…一些代码….]
<div class="col-3-4 local_responses">
<div class="content full" id="user_profile" style="display: block;">
<h2>settings :: User Profile</h2>
</div>
<div class="content full" id="dashboard">
<h2>settings :: Dashboard</h2>
</div>
<div class="content full" id="change_password">
<h2>settings :: Change Password</h2>
</div>
</div>
设置::用户配置文件
设置::仪表板
设置::更改密码
下面是一些js:
var local_links = $(".local_links");
var local_responses = $(".local_responses");
$(("a"),local_links).on("click", function(e){
e.preventDefault();
var id = $(this).attr("href");
local_links.find("div.arrow-selected").remove();
$(this).parent().append('<div class="arrow-selected"></div>');
$(".content", local_responses).animate({opacity: 0});
$(id, local_responses).animate({opacity: 1});
});
var local_links=$(“.local_links”);
var local_responses=$(“.local_responses”);
$((“a”),本地链接。在(“单击”)上,函数(e){
e、 预防默认值();
var id=$(this.attr(“href”);
local_links.find(“div.arrow-selected”).remove();
$(this.parent().append(“”);
$(“.content”,本地_响应)。动画({opacity:0});
$(id,局部_响应)。设置动画({opacity:1});
});
如果我执行console.log(id)。。。它很好地显示了ID。。。但它只适用于第一个元素。我知道我错过了一些琐碎的事情。有什么想法吗 我很确定jQuery的所有功能都正常运行,但是只设置
不透明度
的动画并不会神奇地将显示
样式从无
更改为块
或任何元素的值。我很确定您为.content
设置了一个样式,使显示:无代码>。为不透明度设置动画时,对于div,其显示保持为无
,第一个除外,因为默认情况下,它被块
覆盖。是否有任何原因导致您正在设置不透明度的动画,而没有使用类似fadeIn()
和fadeOut
此外,由于您正在href
中存储id
,因此无需执行类似$(id,本地\u响应)
…只需使用$(id)
。看看这个:
var local_links=$(“.local_links”);
var local_responses=$(“.local_responses”);
$(本地链接)。在(“单击”,“a”,函数(e){
e、 预防默认值();
var id=$(this.attr(“href”);
local_links.find(“div.arrow-selected”).remove();
$(this.parent().append(“”);
$(“.content”,本地_响应)。淡出(400);
$(id).delay(400).fadeIn(400);
});
需要注意的是,我更改了
绑定上的,因为这样,它不会为找到的每个
创建一个事件处理程序-它会为本地链接中的每个项目创建一个事件处理程序,但只会对选择器“a”
执行,我不确定您到底在寻找什么行为,但是,将您的代码原封不动地发布到,我似乎可以让它在所有三个链接中都保持一致
我不知道你为什么要用括号把下面的“a”
括起来:
$(("a"),local_links).on("click", function(e){ //...
这同样适用于:
$("a", local_links).on("click", function(e){ // ...
但他们也没有伤害任何东西
那么这把小提琴会重复你的问题吗?如果不是,则问题出在您发布的内容以外的代码中。ID在页面中必须是唯一的,请改用类。您确定不是指local\u links.on(“单击”,“a”,函数(){})代码>?在您的代码中,元素在何处具有类“local_links”?您的代码示例没有显示任何锚定标记,很难进行注释。@AmoghTalpallikar有,它们在表中。请显示生成的HTML,而不是模板语言(无论您在{HTML::link('#dashboard',dashboard')}
语法中使用什么)这在现阶段确实令人困惑。事实上,它确实在JSFIDLE上起作用。我将再次检查我的代码。是的,您可以使代码“正确”运行,但这是因为您没有将显示的默认样式设置为无。内容,这在原始问题中没有指定,但可以假定。在这种情况下,使用opacity
不会改变显示的任何内容
@Ian:是的,这是很有可能的。只是不清楚遗漏了什么。我假设Jacek可以使用类似的东西来帮助找出缺少的东西…它确实可以与fadeIn/out一起工作。谢谢你,伊恩!我实际上没有意识到不透明度:0不会设置显示:无。这就成功了。@Jacekminiak Yep,3种完全不同的元素显示样式-显示
,可见性
和不透明度
。但这三个都是完全不同的,而且是不相关的
$("a", local_links).on("click", function(e){ // ...