Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 一次修改多个DOM项_Javascript_Jquery_Dom - Fatal编程技术网

Javascript 一次修改多个DOM项

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

我正在尝试更改表单中值的占位符,如果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.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
});