1

元の質問

選択タイプをチェックして値を適切に設定するjQueryメソッドはありますか?例:.html()または.val()を使用します。

私は自分のために仕事をするための独自の方法を作りましたが、これがこのタスクを実行するための最良の方法であるかどうかはわかりません。

$.fn.data = function(value) {
    if(this.is("input")){
        this.val(value);
    }else if(... other type ...){
        this.val(value);
    }else{
        this.html(value);
    }
};

tagName属性の使用も検討しました。var type = this.prop( "tagName")。toLowerCase();

編集:

ベンチマーク

興味のある人のために、this.tagNameの間で少しベンチマークを行いました。および$(this).is( "input"); 10,000レコード。

this.tagName.toLowerCase();x10,000レコード=185ミリ秒

$(this).is("input");x10,000レコード=1676ミリ秒

4

2 に答える 2

3

ここでは、プラグイン形式で移動します。

$.fn.setVal = function(value) {

    return this.each(function() {

        if ($.inArray( this.tagName.toLowerCase(), ['input', 'textarea', 'select'] ) != -1) {
            $(this).val( value );
        } else {
            $(this).text( value );
        }       
    });
};

次のように使用します。

$('input, span').setVal('Some Value');

ここで実際に見てください:http://jsfiddle.net/fkHLc/

于 2012-05-15T00:04:48.023 に答える
2

.valは主に要素に使用されるため、セレクターinputを使用して何かを書くことができます。:input

if (this.is(":input")) {
   this.val(value);
} else { 
   this.html(value);
}

または、より具体的にしたい場合は、複数のセレクターを使用できます。

if (this.is("input, textarea, select" /*, etc. */) {
    this.val(value);
} else {
    this.html(value);
}
于 2012-05-14T23:59:57.123 に答える