将值或文本设置为未知元素

时间:2013-05-21 01:05:27

标签: jquery forms set element

我正在尝试设置元素的值,如果无法设置该值(因为它不是输入元素,如input,select或textarea),那么它必须是一个可以填充的元素文本()

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

这样的事情。有没有一种方法可以让我在jQuery中执行此操作?

谢谢

3 个答案:

答案 0 :(得分:2)

你可以链接方法,jQuery在内部检查它,因此其中一个方法可以工作:

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

http://jsfiddle.net/3Btty/

另一个选项是检查所选DOM元素是否具有特定的属性,如valuetextContent,这样您就可以使用text或{ {1}}方法作为getter:

val

请注意,此方法仅适用于一个选定元素,对于一个选定元素,您可以使用var $elem = $('#some_el'), method = 'value' in $elem[0] ? 'val' : 'text'; var value = $elem[method](); 方法。

http://jsfiddle.net/hTUnS/

答案 1 :(得分:0)

var someval = "My Value";

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

修改

:input选择器无法利用querySelectorAll ...因此性能不会那么好;然而,话虽这么说,你使用的是id,所以你所比较的元素不会超过一个。如果它超过1,我建议过滤它。通常情况下,我不建议使用非规格选择器,但在这里,没关系。

答案 2 :(得分:0)

var someval = "My Value";
$(".someval").each(function () {
    if (typeof $(this)[0].value !== 'undefined') {
        $(this).val(someval);
    } else {
        $(this).text(someval);
    }
});

如果无法设置值,则属性值未定义。