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 在内部对其进行检查,因此其中一种方法将起作用:

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

http://jsfiddle.net/3Btty/

另一个选项是检查选定的 DOM 元素是否具有特定属性,这允许您使用valueor方法作为 getter:textContenttextval

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

var value = $elem[method]();

请注意,此方法仅适用于一个选定元素,对于多个选定元素,您可以使用.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);
}

编辑

选择:input器不能利用 querySelectorAll...所以性能不会那么好;但是,话虽如此,您使用的是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 回答