我正在使用Bootstrap并且具有动态创建的Tab。虽然它们是动态的,但我只会创建3个Tabs。它们是:草案,已发布和已存档。这些实际上是Enums。
当我单击选项卡时,我想将隐藏字段更改为选项卡的相同值,以便在发生回发时,我希望打开之前打开的选定内容。
tabs id是#i,其中i是for循环中的迭代器。因此选项卡将是:#0,#1和#2。
有没有人知道如何为所有标签创建一个onclick事件,并使隐藏字段的值更改为标签ID的值。
这是代码:
<div class="tab-content">
@for (int i = 0; i < Model.WorkflowStatuses.Count; i++)
{
<div class="tab-pane @(i == 0 ? "active" : string.Empty)" id="@i">
修改 这就是我到目前为止 - 隐藏字段的价值并没有改变:
<script>
$('#listingTab a[data-toggle="tab"]').on('show', function (e) {
$('#selectedTab').val($(e.target).prop('id'));
})
@Html.HiddenFor(m=>Model.SelectedTab)
@if (Model.AnyListings)
{
<ul class="nav nav-tabs" id="listingTab">
@for (int i = 0; i < Model.WorkflowStatuses.Count; i++)
修改 我添加了字母“t”,但隐藏值仍未改变:
<script>
$('#tab-content a[data-toggle="tab"]').on('show', function (e) {
$('#SelectedTab').val($(e.target).prop('id'));
})
</script>
@Html.HiddenFor(m=>Model.SelectedTab)
@if (Model.AnyListings)
{
<ul class="nav nav-tabs" id="listingTab">
@for (int i = 0; i < Model.WorkflowStatuses.Count; i++)
{
<li class="@(i == 0 ? "active" : string.Empty)"><a href="@string.Format("#t{0}", i)" data-toggle="tab">@Model.WorkflowStatuses[i].ToString()</a></li>
}
答案 0 :(得分:1)
你不能给你的标签一个类,然后像这样绑定它们:
$(".tabs").on('click', function() {
$('#my_input').val($(this).attr('id'));
});
此外,您需要使用字母启动标签ID标签。例如#t1,#t2等。
答案 1 :(得分:1)
对现在和将来与当前选择器匹配的所有元素使用Live事件处理程序。
为所有生成的选项卡提供一个公共类,以便实时事件绑定器也将绑定到所有新创建的选项卡
$("a.offsite").live("click", function(){
alert("Hi!");
//Your code
});
希望这有帮助
答案 2 :(得分:1)
尝试使用show
event,无论何时更改活动标签,都会触发:
$('#yourTabControl a[data-toggle="tab"]').on('show', function (e) {
$('#hiddenField').val($(e.target).prop('id'));
})
<强> [编辑]:强>
聊天结束后,我们得出结论e.target
是您点击的链接,而不是它激活的标签。因此,为了使代码更容易,我建议在链接上使用data-tabid
属性:
<li class="@(i == 0 ? "active" : string.Empty)">
<a href="@string.Format("#t{0}", i)" data-toggle="tab"
data-tabid="@i">@Model.WorkflowStatuses[i].ToString()</a></li>
并在事件处理程序中使用它:
$('#yourTabControl a[data-toggle="tab"]').on('show', function (e) {
$('#hiddenField').val($(e.target).data('tabid'));
})