设置HTML DIV类和设置DIV数据属性在剃须刀使用jQuery查看

问题描述:

我有一个HTML代码片段像下面设置HTML DIV类和设置DIV数据属性在剃须刀使用jQuery查看

<div class="child-station-sub child-station-sub1"> 
<h4><a href='#' class="child-station-opener station1 open" data-staion="NORTH_SOUTH_LINE">North - South Line</a></h4> 


<div class="child-station-sub child-station-sub2"> 
<h4><a href='#' class="child-station-opener station2 subdrop" data-staion="EAST_WEST_LINE">East - West Line</a></h4> 


<div class="child-station-sub child-station-sub3"> 
<h4><a href='#' class="child-station-opener station3 subdrop" data-staion="COST_WEST_LINE">Cost - West Line</a></h4> 

我试图设置类和HTML数据上的属性时,其装载

于是,我就这样做使用jQuery像下面

@foreach (var item in ViewBag.listGroups) 
{ 

     <div id="divstation" class="child-station-sub child-station-sub1"> 
     <p class="hidden">@item.ID</p> 
     <h4><a id="stationlg" href='#' class="child-station-opener station1 open" data-staion="EAST_WEST_LINE">@item.GroupName</a></h4>    

} 


<script type="text/javascript"> 
    $(document).ready(function() { 

     var idvalue = item.ID.ToString(); 

     if (idvalue == 1) { 
      alert('sample') 
      $('#divstation').attr('class', 'child-station-sub child-station-sub1'); 
      $('#stationlg').attr('class', 'child-station-opener station1 open'); 
      $('#stationlg').attr('data-staion', "NORTH_SOUTH_LINE"); 
     } 

     else if (idvalue == 2) { 
      $('#divstation').attr('class', 'child-station-sub child-station-sub2'); 
      $('#stationlg').attr('class', 'child-station-opener station2 subdrop'); 
      $('#stationlg').attr('data-staion', "EAST_WEST_LINE"); 
      }); 

     else if (idvalue == 3) { 
      $('#divstation').attr('class', 'child-station-sub child-station-sub3'); 
      $('#stationlg').attr('class', 'child-station-opener station3 subdrop'); 
      $('#stationlg').attr('data-staion', "COST_WEST_LINE"); 
      }); 
</script> 

但上面的尝试不能正常工作,我该怎么办这里

+0

你是在一个循环中创建元素,因此它会创建重复的ID这将在HTML中渲染无效的HTML __Identifiers必须是唯一的_ – Satpal

+0

这不是纯HTML,这实际上是cshtml –

+0

@kelumpriyadarshane它仍然会为多个元素创建相同的ID,这是一个很大的禁忌。 – Carcigenicate

你可以做这样的事情

@foreach (var item in ViewBag.listGroups) 
{ 
    string divClass; 
    string aClass; 
    string data; 

    switch(item.ID.ToString()) 
    { 
     case "1": 
      divClass = "appropriate class for div"; 
      aClass = "appropriate class for a"; 
      data = "appropriate data attribute"; 
     break; 

     /* other cases */ 
    } 

    <div id="[email protected]" class="@divClass"> 
    <p class="hidden">@item.ID</p> 
    <h4><a id="[email protected]" href='#' class="@aClass" data-staion="@data">@item.GroupName</a></h4> 
} 

但它真的不应该做的方式。相反,你应该考虑使用视图模型,并通过了所有这些数据,如从后端必要classdata-*值,这样你就可以简单地使这些项目

foreach(var item in Model.Items) 
{ 
    <div id="[email protected]" class="@item.DivStationClass"> 
     <p class="hidden">@item.Id</p> 
     <h4><a id="[email protected]" href="#" class="@item.AnchorClass" data-station="@item.DataStation">@item.GroupName</a></h4> 
    </div> 
}