Javascript 一次修改多个DOM项
我正在尝试更改表单中值的占位符,如果internet explorer是版本9或8,我得到了以下代码图片Javascript 一次修改多个DOM项,javascript,jquery,dom,Javascript,Jquery,Dom,我正在尝试更改表单中值的占位符,如果internet explorer是版本9或8,我得到了以下代码图片 if( $("html").data("version") == "IE9-10" ){ var brand = $(".brand input"); var value = brand.attr("placeholder"); var model = $(".model input"); var value2 = model
if( $("html").data("version") == "IE9-10" ){
var brand = $(".brand input");
var value = brand.attr("placeholder");
var model = $(".model input");
var value2 = model.attr("placeholder");
brand.val(value);
model.val(value2);
}
我想知道是否有一种方法可以使代码更简单,减少重复性,以达到相同的效果,我只需要选择.brand输入和.model输入,存储它的占位符值,并用占位符值替换输入值,如果你们能帮助我,我将不胜感激
这里是HTML,我使用一个插件谁转换选择自定义设计,但插件使用占位符,我需要支持ie9和ie8,所以我会告诉你选择的HTML和插件的HTML输出
<select name="brand" class="brand" style="display: none;">
<option value="">Marca</option>
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="mercedes">Mercedes</option>
<option value="audi">Audi</option>
</select>
马卡
沃尔沃汽车
萨博
梅赛德斯
奥迪
插件输出
<div class="brand">
<input type="text" value="" placeholder="Marca">
<ul>
<li data-value="volvo" class="">Volvo</li>
<li data-value="saab" class="">Saab</li>
<li data-value="mercedes" class="">Mercedes</li>
<li data-value="audi" class="">Audi</li>
<li class="minict_empty">Ningun resultado concuerda con la palabra.</li>
</ul>
</div>
- 沃尔沃
- 萨博
- 梅赛德斯
- 奥迪
- 这是一个令人震惊的结果
这样就可以了:)。由于您对每个选择器都执行相同的操作,因此可以组合选择器并使用: 试一试
在演示时,我没有实现
.val()
接受的函数!事实上,我更喜欢这个答案。(OP注意:您需要jQuery 1.4+@PlatinumAzure它是从v1.4()开始添加的。)。大多数(如果不是所有的话)setter函数都支持这种语法。这一个对我来说非常好@gabykag.Petrioli,但我仍然不知道为什么。each()不起作用,这是我的主要选择。@JhonnatanGonzalezRodriguez,你还没有发布不起作用的代码,所以我无法对它失败的原因发表评论。。如果你把它添加到你的问题中,我可以看一下…@gabykag.Petrioli-hahaha对不起,这是代码$(“.brand-input,.model-input”).each(function(){$(this.val($(this.attr(“占位符”);});我已经用过这个了,butt似乎在ie9上不起作用,它只是替换了。品牌输入另一个仍然是白色的:(不明白为什么你能给我们看你的HTML(编辑你的问题)?可能HTML中有一些我们没有考虑的奇怪之处。您只显示div.brand标记,但您说.model案例失败。您能包含所有HTML吗?
$(".brand input, .model input").each(function(){
$(this).val($(this).attr("placeholder"));
});
if( $("html").data("version") == "IE9-10" ){
$(".brand input, .model input").each(function () {
// In this function, "this" is the raw DOM element being iterated over,
// so $(this) is a jQuery wrapper around that element.
var $this = $(this); // I like caching to save jQuery constructor calls :-)
$this.val($this.attr("placeholder"));
});
}
$('.brand, .model').find('input').val(function(){
return this.placeholder;
// or $(this).attr('placeholder'); if IE cannot access the attribute directly
});