如何使用JQuery中的PREV函数访问SPAN元素?

如何使用JQuery中的PREV函数访问SPAN元素?,jquery,html,Jquery,Html,单击按钮时,它需要查看其当前位置并找到特定的跨度标记。不幸的是,它要么找不到标签,要么不更改其内容 这是不起作用的代码 $(this).prev("span[id*=CommentText]").hide(); 我可以在加载事件期间设置颜色,但单击链接时不会进行任何更改 这仅在加载阶段有效: $("span[id*=CommentText]").css("background-Color", "red"); 编辑: $(文档).ready(函数(){ $(“textarea[id*=Com

单击按钮时,它需要查看其当前位置并找到特定的跨度标记。不幸的是,它要么找不到标签,要么不更改其内容

这是不起作用的代码

$(this).prev("span[id*=CommentText]").hide();
我可以在加载事件期间设置颜色,但单击链接时不会进行任何更改

这仅在加载阶段有效:

$("span[id*=CommentText]").css("background-Color", "red");
编辑:


$(文档).ready(函数(){
$(“textarea[id*=Comments]”).hide().css(“背景色”,“白色”);
$(“span[id*=CommentText]”)css(“背景色”、“红色”);
$([id*=CommentLink])。单击(LoadComments.css(“背景色”、“白色”);
});
函数LoadComments(){
$(this).prev(“textarea[id*=Comments]”).animate({backgroundColor:'yellow'},500.show().focus();
$(this.prev(“span[id*=CommentText]”)css(“背景色”、“白色”);
$(this.fadeOut();
}
这里的评论
这里的评论
添加/编辑评论
评论2
评论2
添加/编辑评论

试试这个
$([span[id*='CommentText'])
试试这个
$([span[id*='CommentText'])
你试过使用.live事件绑定click事件吗?绑定到click事件将仅适用于尚未动态添加的元素


您是否尝试使用.live事件绑定click事件?绑定到click事件将仅适用于尚未动态添加的元素


根据文档,
.prev()的问题在于:

只有前一个兄弟姐妹 返回,而不是所有以前的 兄弟姐妹

您可能必须使用
prevAll(“span[id*='CommentText'])
(未测试)


根据文档,
.prev()的问题在于:

只有前一个兄弟姐妹 返回,而不是所有以前的 兄弟姐妹

您可能必须使用
prevAll(“span[id*='CommentText'])
(未测试)

试试这个:

$(this).parent().find("span[id*=CommentText]").hide();
编辑:您可能需要也可能不需要子选择器
。由于我使用ASP.NET,我不得不经常使用它。
编辑:是的,你不需要子选择器,所以我删除了它。

试试这个:

$(this).parent().find("span[id*=CommentText]").hide();
编辑:您可能需要也可能不需要子选择器
。由于我使用ASP.NET,我不得不经常使用它。

编辑:是的,你不需要子选择器,所以我删除了它。

如果你的标记的结构总是一样的,我倾向于保持它的简单性并继续使用它

$(this).prev().prev() ...
其他替代方法是使用
prevAll()

旁注:


只要看看您的标记,使用CSS类(而不是ID和属性过滤器)来选择基于以
x开头、结尾或包含
x
的ID的元素可能会更容易。在所有/几乎所有的浏览器(尤其是那些实现或的浏览器)中,它可能会更快。

如果标记的结构总是相同的,我倾向于保持它的简单性并使用它

$(this).prev().prev() ...
其他替代方法是使用
prevAll()

旁注:


只要看看您的标记,使用CSS类(而不是ID和属性过滤器)来选择基于以
x开头、结尾或包含
x
的ID的元素可能会更容易。在所有/几乎所有浏览器(尤其是那些实现或的浏览器)中,它的速度可能都会更快。

那么问题显然在于分配单击功能。相应地显示代码,最好是以onclick事件的风格显示,onclick事件确实会触发,并且工作正常。但是,这行代码不起作用。尽管如此,请发布一个SSCCE(从
),以便更清楚地了解问题的背景。然后,问题显然在于分配单击功能。相应地显示代码,最好是以onclick事件的风格显示,onclick事件确实会触发,并且工作正常。但是,这行代码不起作用。尽管如此,请发布一个SSCCE(从
),以使问题的背景更加清楚。当页面上的其他元素正确更改时,单击事件会触发。使用第一行$(“span[id*=CommentText]”)css(“背景色”、“红色”);我可以在单击事件期间更改属性,但我似乎无法访问单个元素。当页面上的其他元素正确更改时,单击事件会触发。使用第一行$(“span[id*=CommentText]”)css(“背景色”、“红色”);我可以在点击事件中更改属性,但我似乎无法获取单个元素。回答得好。在我的例子中,元素在某种容器中,但如果它们在同一个容器中,它就不起作用了。我明白你的意思。我的评论指的是你原来的帖子,内容在TD容器中。由于您的帖子目前不可用。我建议使用某些命名约定,并根据id而不是DOM位置进行选择。毕竟,如果您决定拆分注释或在锚点和跨度之间添加元素,您将不得不重新讨论这个问题。回答得好。在我的例子中,元素在某种容器中,但如果它们在同一个容器中,它就不起作用了。我明白你的意思。我的评论指的是你原来的帖子,内容在TD容器中。由于您的帖子目前不可用。我建议使用某些命名约定,并根据id而不是DOM位置进行选择。毕竟,如果决定拆分注释或在锚点和span之间添加元素,则必须重新讨论此问题。$(this).prev().prev().css(“背景色”,“白色”).hide();在元素位于同一容器中的情况下有效且不会失败。$(this).prev().prev().css(“背景色”,“白色”).hide();
$(this).parent().find('span[id*=CommentText]');