Javascript MVC PartialView和JQuery,JS应用于所有PartialView

Javascript MVC PartialView和JQuery,JS应用于所有PartialView,javascript,jquery,asp.net-mvc,Javascript,Jquery,Asp.net Mvc,我有我的主页,其中包含一些局部视图 这是我的Index.cshtml <div class="container"> @{ foreach (var summary in Model.Summaries) { <div class="partialViewWrapper"> @Html.Partial("_Summary", summary)

我有我的主页,其中包含一些局部视图

这是我的Index.cshtml

<div class="container">
    @{
        foreach (var summary in Model.Summaries)
        {
            <div class="partialViewWrapper">
                @Html.Partial("_Summary", summary)               
            </div>
        }
    }
</div>
我的部分观点(相关部分):


表演时间
...
我的问题是,当我单击第一个局部视图上的按钮时,它会将其文本更改为隐藏不显示,但两个局部视图都显示各自的表

因此,更改按钮文本的JS应用于正确的局部视图按钮,但显示/隐藏表格的JS应用于所有局部视图

我想我需要用$(this)做一些事情,而不是仅仅通过类引用它,但我不知道如何用JQuery实现这一点


谢谢,

使用相对选择器获取包含这两个元素的
.closest()
祖先,然后
.find()
找到该祖先中的另一个元素

var btn = $(this);
var foo = btn.closest('.row').find('.foo');
if (state === 'Show Down Times') {
    btn.html('Hide Down Times');
    foo.show();
} else {
    btn.html('Show Down Times');
    foo.hide();
}  

使用相对选择器获取包含这两个元素的
.closest()
祖先,然后
.find()
找到该祖先中的另一个元素

var btn = $(this);
var foo = btn.closest('.row').find('.foo');
if (state === 'Show Down Times') {
    btn.html('Hide Down Times');
    foo.show();
} else {
    btn.html('Show Down Times');
    foo.hide();
}  
原因是
$('.foo')
。因为您没有在特定的部分中指出表格。选择器选择类
foo
的所有类

解决这个问题的办法是

任一

使用
btn
parent
next
功能选择父代的兄弟姐妹,然后使用
hide
show

向按钮添加一个附加属性,如
data target
并添加类或id的名称。使用
btn.data('target')
访问它,然后使用
hide
show
原因是
$('.foo')
。因为您没有在特定的部分中指出表格。选择器选择类
foo
的所有类

解决这个问题的办法是

任一

使用
btn
parent
next
功能选择父代的兄弟姐妹,然后使用
hide
show


向按钮添加一个附加属性,比如说
data target
,并添加类或id的名称。使用
btn.data('target')
访问它,然后使用
hide
show

使用
class=“foo”
的元素在哪里?doh!用
class=“foo”
?doh!更新了问题@stephen元素在哪里!更新了问题@stephenimpobsible,除非两者都在同一个
内对不起,你是对的。我必须按住ctrl+refresh键,然后它才能获取JS更改。现在一切都好了。非常感谢。我已经接受了你的回答。不可能,除非两者都在同一个
内。对不起,你是对的。我必须按住ctrl+refresh键,然后它才能获取JS更改。现在一切都好了。非常感谢。我接受了你的回答。
var btn = $(this);
var foo = btn.closest('.row').find('.foo');
if (state === 'Show Down Times') {
    btn.html('Hide Down Times');
    foo.show();
} else {
    btn.html('Show Down Times');
    foo.hide();
}