jQuery:从 JSON 对象为元素设置值
jQuery: set value for element from JSON-object
这可能很难解释,但我有这样的数组对象:
myobject = {
"class1" : "value1",
"class2" : "value2",
"class3" : "value3",
...
}
我有脚本
$.each(myobject,function(i,val){
try{
var it=0;
$("." + i).each(function(it){
switch($("." + i)[it].nodeName){
case "SPAN":case "A":case "DIV":
$("." + i).html(val);
break;
case "INPUT":
switch($("." + i).attr("type")){
case "submit":
$("." + i).attr("value",val);
break;
case "text":case "password":case "email":
$("." + i).attr("placeholder",val);
break;
}
break;
case "IMG":
$("." + i).attr("alt",val);
$("." + i).attr("title",val);
break;
}
});
}catch(err){
// Nothing
}
});
代码对span
、a
、div
的影响应该是这样的:
Was: <span class="class1"></span>
Is: <span class="class1">value1</span>
而对于input
type=submit
,应该是这样的:
Was: <input type="submit" class="class2" />
Is: <input type="submit" class="class2" value="value2" />
span
、a
、div
和input[type=submit]
的代码效果,但这不会设置placeholder
。
你正在尝试的是一种过于复杂的方法来做你想做的事情。 只需利用 jQuery 选择器的强大功能即可按标签类型进行过滤:
$.each(myobject, function(k, v){
$('span.' + k + ', ' +
'a.' + k + ', ' +
'div.' + k).html(v);
$('input.' + k + '[type="submit"]').val(v);
$('input.' + k + '[type="text"], ' +
'input.' + k + '[type="password"], ' +
'input.' + k + '[type="email"]').attr('placeholder', v);
$('img.' + k).attr('title', v)
.attr('alt', v);
});
编辑:
查看演示
(也许你可以通过查看演示和你的代码来弄清楚有什么不同以及为什么它不起作用)
相关文章:
- 使用 JavaScript 一次为一个元素设置多个属性
- 为dropdownlistfor(MVC)中的每个元素设置唯一id
- 无法为HTML5中具有画布和图像的可拖动元素设置“拖动图像”
- Jquery为每个元素设置属性
- 在JSON数组中进行迭代,并为其元素设置样式
- 将jquery ui窗口的父元素设置为另一个元素
- 如何使用随机css id为元素设置样式
- 如何为所有子元素设置填充
- Javascript:为元素设置适当的事件处理程序
- 为已设置动画的元素设置动画
- 将HTML元素设置为可滚动
- jQuery:从 JSON 对象为元素设置值
- 如何为 HTML 中的多个元素设置相同的 ID
- 为动态创建的元素设置属性
- 同时为一个 Li 元素设置类“活动”
- 如何使用 javascript 为元素设置内联 css 样式
- 如何为动态添加的 html 元素设置 setCustomValidity()
- 为包含 HTML 标记的字符串中的元素设置 Style 属性
- 获取两个元素的高度,将另一个元素设置为该高度
- 为表单元素设置 Cookie