单击按钮时,需要在其发生之前查看并找到特定的span标记。不幸的是,它要么找不到标签,要么不改变它的内容。
这是不起作用的代码。
$(this).prev("span[id*=CommentText]").hide();
我可以在加载事件期间设置颜色,但是当点击链接时它不会进行任何更改。
这只适用于加载阶段:
$("span[id*=CommentText]").css("background-Color", "red");
编辑:
<html>
<head>
<script src="../Scripts/jquery-1.3.2-vsdoc.js" type="text/javascript"></script>
<script src="../Scripts/jquery-1.3.2.js" type="text/javascript"></script>
<script src="../Scripts/jquery.color.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
$("textarea[id*=Comments]").hide().css("background-Color", "white");
$("span[id*=CommentText]").css("background-Color", "red");
$("a[id*=CommentLink]").click(LoadComments).css("background-Color", "white");
});
function LoadComments() {
$(this).prev("textarea[id*=Comments]").animate({ backgroundColor: 'yellow' }, 500).show().focus();
$(this).prev("span[id*=CommentText]").css("background-Color", "white");
$(this).fadeOut();
}
</script>
</head>
<body>
<span id="Q37CommentText">comments here</span>
<textarea name="Q37Comments" rows="1" cols="50" id="Q37Comments">comments here</textarea>
<a id="Q37CommentLink">Add/Edit Comment</a>
<span id="Q40CommentText">Comment 2</span>
<textarea name="Q40Comments" rows="1" cols="50" id="Q40Comments">Comment 2</textarea>
<a id="Q40CommentLink">Add/Edit Comment</a>
</body>
</html>
答案 0 :(得分:7)
如果你的标记结构总是一样的话,我会倾向于保持简单并与
一起使用$(this).prev().prev() ...
其他替代方案正在使用prevAll()
$(this).prevAll('span:first'); // may or may not need the attribute filter depending
// on if there are more <span> elements as siblings
导航到父级,然后调用find()
$(this).parent().find('span[id*=CommentText]');
附注:
只需查看您的标记,使用CSS类可能更容易,而不是使用ID和属性过滤器来选择基于以x
开头,结尾或包含{{1}}的ID的元素。在所有/几乎所有浏览器中(特别是那些实现document.getElementsByClassName(classNames)
或Selectors API的
答案 1 :(得分:1)
.prev()
的问题在于根据文档:
只有前一个兄弟姐妹 退回,而不是以前的所有 兄弟姐妹。
您可能必须使用prevAll("span[id*='CommentText']")
(未经测试)。
答案 2 :(得分:1)
试试这个:
$(this).parent().find("span[id*=CommentText]").hide();
编辑:您可能需要也可能不需要子选择器>
。由于我使用ASP.NET,我必须经常使用它
编辑:是的,你不需要子选择器,所以我把它删除了。
答案 3 :(得分:0)
试试这个$("span[id*='CommentText']")
答案 4 :(得分:0)
您是否尝试过使用.live事件绑定click事件?绑定到click事件仅适用于尚未动态添加的元素。