1

要素の値を設定しようとしています。値を設定できない場合 (input、select、textarea などの入力要素ではないため)、text() を入力できる要素である必要があります。

var someval = "My Value";
//Try and set value
$("#some_el").val(someval);
// If it couldn't set
$("#some_el").text(someval);

そんな感じ。jQueryでこれを行う方法はありますか?

ありがとう

4

3 に答える 3

2

メソッドを連鎖させることができ、jQuery が内部的にチェックするため、メソッドの 1 つが機能します。

$("#some_el").val(someval).text(someval);

http://jsfiddle.net/3Btty/

別のオプションは、選択した DOM 要素にような特定のプロパティがあるvalueかどうかを確認することです。これにより、またはメソッドをゲッターとしてtextContent使用できます。textval

var $elem = $('#some_el'),
    method = 'value' in $elem[0] ? 'val' : 'text';

var value = $elem[method]();

このメソッドは、選択した 1 つの要素に対してのみ機能することに注意してください。複数の選択した要素に対して.each()メソッドを使用できます。

http://jsfiddle.net/hTUnS/

于 2013-05-21T01:11:38.580 に答える
0
var someval = "My Value";

if($('#some_el').is(':input')){
    $("#some_el").val(someval);
}else{
    $("#some_el").text(someval);
}

編集

セレクターは:inputquerySelectorAll を利用できないため、パフォーマンスはそれほど高くありません。ただし、そうは言っても、 を使用しているidため、比較する要素が複数存在することはありません。1 より大きい場合は、それに対してフィルタリングすることをお勧めします。通常、非仕様セレクターの使用はお勧めしませんが、ここでは、問題ありません。

于 2013-05-21T01:06:24.520 に答える
0
var someval = "My Value";
$(".someval").each(function () {
    if (typeof $(this)[0].value !== 'undefined') {
        $(this).val(someval);
    } else {
        $(this).text(someval);
    }
});

値を設定できない場合、属性の値は未定義です。

于 2013-05-21T01:43:21.940 に答える