1

如果 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,我使用了一个将 select 转换为自定义设计的插件,但是插件使用占位符,我需要支持 ie9 和 ie8,所以我会向您展示 select 的 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>
4

3 回答 3

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/

于 2013-09-25T22:23:00.110 回答
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"));
    });
}
于 2013-09-25T22:22:28.107 回答
0
$(".brand input, .model input").each(function(){
    $(this).val($(this).attr("placeholder"));
});

那应该这样做:)。

于 2013-09-25T22:22:23.370 回答