5

jQuery 中有没有办法确定一个元素是否有值或 innerhtml(或两者都有)?例如,如果输入元素,那么它有一个 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

这应该可以解决问题:

见演示

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

this.tagName会告诉你你有哪种元素类型。jQuery 对象没有tagName属性。

于 2012-12-04T16:57:43.387 回答
0

检查它是否具有 value 属性

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



}
于 2012-12-04T17:04:19.000 回答