我有一组属于'userPosts'类的div',我正在为每个元素动态创建一个单独的ID。我要设置动画的元素与单击按钮执行动画的ID相同。我希望获得所有$(“textarea”)元素的“ID”,其ID与点击的按钮具有相同的ID,并使用匹配的id为textarea设置动画。
@foreach(var post in posts){
<div id="@post.ID"class="userPosts">
<button class="view"id="@post.ID">View Post!!!</button><br>
<h3><strong>Name</strong></h3><br>
<h5>@post.FirstName</h5><br />
<h5>@post.LastName</h5><br />
<h3><strong>Subject</strong></h3><br>
<h5>@post.Subject</h5><br><br>
<br><br>
<textarea id=""rows="4" cols="40">@post.Comments</textarea>
</div><br><br>
}
这不起作用,但这就是我提出的
$(".view").on("click", function ()
{
var selected = $(this).attr("id")
stop().animate(selected, { height: '800px' }, 1000);
stop().show(selected,"textarea");
// $(".userPosts").stop().animate({ height: '800px' }, 1000);
//$(".userPosts textarea").stop().show();
});
答案 0 :(得分:1)
首先,你不需要这里的ID - 只需使用类: 下面的代码选择单击的.view按钮的父DIV(divCont),然后使用.find(),选择带有类.commentsBox的textarea。警报就是为了表明选择了正确的方框
请参阅jsfiddle了解工作示例:
$(".view").on("click", function () {
var divCont = $(this).closest("div")
var txtBox = divCont.find(".commentsBox")
alert(txtBox.val())
});
一旦你选择了正确的textarea并给它var txtBox,你可以做任何你想做的事情(比如show,animate,fill it - whatever)
请记住,这会在DIV中找到带有.commentsBox类的下一个元素。如果您有多个.commentsBox元素,则需要使用.eq(0)根据索引选择正确的元素