5

要素に値またはinnerhtml(あるいはその両方)があるかどうかを判断する方法はjQueryにありますか?たとえば、要素が入力されている場合、その要素にはvalがあり、次を使用できます。

$(this).val();

しかし、それがdivの場合は、次を使用する必要があります。

$(this).html();

valとHTMLのどちらを使用する必要があるかを知る必要があります。私のjQueryは次のとおりです。

$(".myclass").each(function(idx){
  if (this is a val based element)
    use val
  else
    use html
});
4

5 に答える 5

5

このフィドルを試してみてください。

HTML:

<div></div>
<input/>
<textarea></textarea>
<select>
    <option>foo</option>
    <option>baz</option>
</select>​

コード:

changeText("div", "baz");
changeText("input", "baz");
changeText("textarea", "baz");
changeText("select", "baz");

function changeText(selector, text) {
    var element = $(selector);
    var attr = element.attr('value');
    if (typeof attr !== 'undefined' && attr !== false) {
        element.val(text);
    } else {
        element.text(text);        
    }
}
于 2012-12-04T17:05:42.910 に答える
2
$(".myclass").each(function(k, v){
    var data = ($(v).val() ?: $(v).html());
});

.val()からデータを取得してみてください。何も返されない場合は、.html()を使用してください。

于 2012-12-04T17:02:58.287 に答える
1

this.tagNameあなたが持っている要素タイプを教えてくれます。tagNamejQueryオブジェクトにはプロパティがありません。

于 2012-12-04T16:57:43.387 に答える
1

これでうまくいくはずです:

デモを見る

$(".myclass").each(function(idx){
    if (this.hasOwnProperty('value'))
        //use val
    else
        //use html
});
于 2012-12-04T17:18:01.573 に答える
0

値属性があることを確認してください

if ($(this).hasAttr('value')){



}
于 2012-12-04T17:04:19.000 に答える