我正在尝试设置元素的值,如果无法设置该值(因为它不是输入元素,如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中执行此操作?
谢谢
答案 0 :(得分:2)
你可以链接方法,jQuery在内部检查它,因此其中一个方法可以工作:
$("#some_el").val(someval).text(someval);
另一个选项是检查所选DOM元素是否具有特定的属性,如value
或textContent
,这样您就可以使用text
或{ {1}}方法作为getter:
val
请注意,此方法仅适用于一个选定元素,对于一个选定元素,您可以使用var $elem = $('#some_el'),
method = 'value' in $elem[0] ? 'val' : 'text';
var value = $elem[method]();
方法。
答案 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);
}
});
如果无法设置值,则属性值未定义。