一次修改多个BOM表项

时间:2013-09-25 22:18:44

标签: 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.attr("placeholder"); 
        brand.val(value);
        model.val(value2);
}

我想知道是否有一种方法可以使代码更简单,重复性更低,以达到同样的效果,我只需要选择.brand输入和.model输入,存储它占位符值并替换in in put价值与占位符价值,如果你们能帮助我,我将不胜感激。

这里是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>

3 个答案:

答案 0 :(得分:2)

尝试

$('.brand, .model').find('input').val(function(){
   return this.placeholder;
   // or $(this).attr('placeholder'); if IE cannot access the attribute directly
});

演示http://jsfiddle.net/deE5A/

答案 1 :(得分:1)

由于您在每个操作上执行相同的操作,您可以组合选择器并使用.each()

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"));
    });
}

答案 2 :(得分:0)

$(".brand input, .model input").each(function(){
    $(this).val($(this).attr("placeholder"));
});

应该这样做:)。