以下是我的情景:
我有一个从viewModel
创建的以下菜单<ul>
<li id="1" class="menu-item-click">Item 1</li>
<li id="2" class="menu-item-click">Item 2</li>
<li id="3" class="menu-item-click">Item 3</li>
</ul>
列表中的每个项目都具有“能力”,知道它应该加载哪个部分视图(它以这种方式存储在数据库中)
我有以下代码来捕获每个列表项上的click事件
$(".menu-item-click").click(function () {
//load the correct partial view
});
我的问题是我应该存储有关要加载的部分视图的信息吗?
我可以将它作为自定义属性存储在列表项(li)中。 (似乎不是最好的方式)
我希望有一种方法可以将列表项的id发送到一种“master”控制器,它可以返回正确的局部视图。
非常感谢任何帮助/方向。
答案 0 :(得分:3)
我更喜欢将数据附加到元素,它被认为是与元素一起存储数据的语义方式,而不是与JS代码混合,而且它被认为是从HTML5开始的标准实践。
<ul>
@foreach (MyView item in Model.MyViews) {
<li id="@item.id" class="menu-item-click" data-view="@item.href">Item 1</li>
}
</ul>
$(".menu-item-click").click(function () {
var view = $(this).data('view');
});
答案 1 :(得分:0)
您可以考虑在每个li上使用data-* attributes。我知道你提到你并不认为这是最好的选择,但我认为最终会保持简洁。
答案 2 :(得分:0)
我不确定你想要存储什么类型的信息以及什么,但如果你使用的是jQuery及其基于DOM,那么存储信息的好方法是$ .data();
$.data('#someElement','theKey','some data goes here')
然后,致电:
$.data('#someElement','theKey')
//returns "some data goes here"
您还可以在其中存储JSON内容,例如:
$.data(document.body,'data',{name:'Jim smith', email:'xxx@xxx.com'});
如果您要存储的数据基于元素,我会这样做。如果它是任意数据,您可以将其存储在localStorage中。如果您正在寻找的更多内容让我知道,我也可以写一个例子。