在迭代

时间:2015-07-14 16:51:42

标签: jquery asp.net-mvc

var i = 0;

@foreach (var item in Model)
{
    <text>

    $('#jp_audio_' + i).attr("id", "#jp_audio_@item.Id")
    i++;

    </text>
}

i ++似乎阻止了它的运作。如果i ++不存在,那么它会将#jp_audio_0设置为新的id,但我需要将所有id设置为新值,而不仅仅是第一个。有什么想法吗?

使用i ++的HTML(Id&#39;未设置为新值);

<audio id="jp_audio_0" preload="metadata" src="http://localhost:6060/Music/StreamPublishedSongs/95"></audio>
<audio id="jp_audio_1" preload="metadata" src="http://localhost:6060/Music/StreamPublishedSongs/96"></audio>

代码中没有i ++(第一个设置实际工作);

<audio id="#jp_audio_96" preload="metadata" src="http://localhost:6060/Music/StreamPublishedSongs/95"></audio>
<audio id="jp_audio_1" preload="metadata" src="http://localhost:6060/Music/StreamPublishedSongs/96"></audio>

3 个答案:

答案 0 :(得分:2)

尝试将变量转换为C#:

@{
int i = 0;
} 
@foreach (var item in Model)
 { 
<text> 
$('#jp_audio_' + @i).attr("id", "#jp_audio_@item.Id"); 
@{i++;} 
</text> 
} 

答案 1 :(得分:0)

你需要更像这样的东西......我使用纯JS,所以你必须适用于你的情况(MVC):

for (i = 0; i < 2; i++) {
    $('#jp_audio_' + i).attr("id", "#jp_audio_@item.Id")
}

此处i将从0开始,然后从1开始结束。不确定您需要在哪里开始和顶部。

答案 2 :(得分:0)

无法看到&#39;模型&#39;的结构。对象,很难说出发生了什么。这是一个jQuery示例,以我认为您想要的方式输出值。请注意我是如何构建对象的,以便我可以访问项目&#39;循环中通过Model.items的属性。

&#13;
&#13;
$(function(){
  var Model = {
        items: [{
            id: 'ID-1234',
            name: 'foo'
        }, {
            id: 'ID-4567',
            name: 'bar'
        }]
    },
    i = 0
  ;
  for( item in Model.items) {
    $('#jp_audio_' + i).attr("id", "#jp_audio_"+Model.items[i].id);
    
    // output some text so we can see the IDs we're changing
    $('.container').append("#jp_audio_"+Model.items[i].id+'<br/>');
    i++;
  } 

});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div class="container">
  <audio id="jp_audio_0" preload="metadata" src="#"></audio>
  <audio id="jp_audio_1" preload="metadata" src="#"></audio>
</div>
&#13;
&#13;
&#13;