使用java-script选择器迭代Dictionary
Iterate over Dictionary with java-script selector
我有一个字典在我的视图,有(inputID,工具提示)。
我也有一组id的我的输入元素在这个页面。我需要用元素id遍历字典:
@{
Dictionary<string, string> questionMarks =
ViewBag.QuestionMarks as Dictionary<string, string>;
@}
<script type="java-script">
$(document).ready(function () {
var inputs = $('input,select[type!="hidden"]');
$.each(inputs, function(i, val) {
if ($(val).attr('id')) {
var id = $(val).attr('id');
var iter_string = '@questionMarks' + "[" + id + "]";
alert(iter_string); // [1]
alert('@questionMarks["cvc"]'); // here i got tooltip
}
});
</script>
[1]我有System. collection . generic . dictionary ' 2[System. collection]。字符串,系统。字符串)(cvc)
感谢Jan Jongboom最后我得到了我想要的:
@using System.Web.Script.Serialization
@{
Dictionary<string, string> questionMarks = ViewBag.QuestionMarks as Dictionary<string, string>;
JavaScriptSerializer jss = new JavaScriptSerializer();
@}
<script type="text/javascript">
var questionMarks = @Html.Raw(jss.Serialize((Dictionary<string, string>)ViewBag.QuestionMarks));
$(document).ready(function () {
for ( keyVar in questionMarks ) {
$('#' + keyVar).attr('original-title', questionMarks[keyVar]);
$('#' + keyVar).tipsy({ gravity: 'w' });
}
});
</script>
<script>
var questionMarks = @new JavaScriptSerializer().Serialize((Dictionary<string, string>)ViewBag.QuestionMarks) ;
</script>
现在你有一个名为questionMarks
的javascript变量,你可以遍历它。
不,您不能从客户端代码遍历服务器变量。您可以从JS变量(如JSON)生成初始化代码或在服务器端生成必要的html。也可以通过ajax请求从jsavascript请求这些数据。
在绘制输入时附加数据属性应该可以帮助您解决这个问题。
示例:http://jsfiddle.net/Krch9/
$(document).ready(function(e) {
var inputs = $("input", "#container");
$.each(inputs, function(i, val) {
var ToolTipText = $(this).data('tooltiptext');
/// Run your tooltip plugin here ...
$("#output").html($("#output").html() + "<br>" + $(this).attr('id') + " : " + ToolTipText);
});
});
使用MVC帮助器,你可以很容易地添加它们:
@Html.TextBoxFor(x => x.Field, new { data_tooltiptext = "Blah blah"});
标记最终看起来像这样:
<input type="text" id="Field" data-tooltiptext="Blah blah">
编辑:额外帮助
。E遍历元素
foreach( var question in questionMarks) {
@Html.TextBox(question.Key, new { data_tooltiptext = question.Value} );
}
然后使用javascript示例(您需要根据自己的需要进行修改…)在
要删除引号,使用Html.Raw()
var questionMarks = '@Html.Raw(jss.Serialize((Dictionary<string, string>)ViewBag.QuestionMarks))';
相关文章:
- 如何在javascript中迭代数字列表
- JS:检查URL中的参数,然后迭代一个参数为var的函数
- 如何迭代Array.prototype函数
- 如何使用jquery迭代具有相同属性的html元素并查找onclick事件
- 在ejs-partial中对JSON对象进行迭代
- 如何在DataTables 2.1中迭代对象数组
- 使用递归属性迭代保留属性结构
- 正在停止.在jquery中的特定时间间隔内,每次迭代的每次执行
- 如果30秒未单击,请应用CSS一次,将其删除,然后重新迭代
- 主干-从模板中迭代的集合中获取特定的模型
- 创建一个方法,通过一个窗口进行迭代并获取Titanium中的所有控件
- 什么's是在javascript中迭代项的最佳方式
- 为什么这只是迭代 HTMLCollection 的奇怪元素
- 是否“;对于的“;循环迭代遵循JavaScript中的数组顺序
- Babel编译错误:找不到模块核心js/library/fn/get迭代器
- 在es6中,将带有回调的事件侦听器设置为可迭代的
- jQuery-迭代不正确?(太长,无法执行)
- 每个$.,循环获胜't逐个迭代HTML元素
- 如何在Jquery中迭代JSON数组
- 使用java-script选择器迭代Dictionary