Javascript 如何在jQuery中区分DOM元素
我有一些代码在表的每一行上循环并创建一个json对象。行中的元素可以是以下任一项:Javascript 如何在jQuery中区分DOM元素,javascript,jquery,Javascript,Jquery,我有一些代码在表的每一行上循环并创建一个json对象。行中的元素可以是以下任一项: <input type="text" id="myelem"/> 由于我使用的是.val()。但是,如果该行包含foo,如何从该行获取数据 我的伪代码如下所示: $('.input-row').each(function(index, row) { var innerObject = {}; /* if #myelem is a text bo
<input type="text" id="myelem"/>
由于我使用的是.val()。但是,如果该行包含foo
,如何从该行获取数据
我的伪代码如下所示:
$('.input-row').each(function(index, row) {
var innerObject = {};
/*
if #myelem is a text box then use .val()
if #myelem is a <p> tag then use .html()
*/
var key = $('#myelem', row).val().toUpperCase();
jsonObject[key] = "bar";
});
$('.input row')。每个(函数(索引,行){
var innerObject={};
/*
如果#myelem是一个文本框,则使用.val()
如果#myelem是一个标记,那么使用.html()
*/
var key=$('#myelem',row.val().toUpperCase();
jsonObject[key]=“bar”;
});
id
s在页面上应始终是全局唯一的。如果需要引用多个元素,则应使用类
。如果将myelem
设置为class
而不是id
,则可以这样引用它
$('.input-row .myelem')
ID是唯一的。同一页中不能使用多个ID。如果这样做,您应该如何决定使用哪种元素?您可以检查元素的类型
var值=null;
如果($('#myid').is('input')){
value=$('#myid').val();
}
如果($('myid')。是('p')){
value=$('#myid').html();
}
您可以使用jQuery is()例如如果$('myelem')。is('p'){…}
如果仍然想坚持您的开发方式,那么下面可能会对您有所帮助:
$('.input-row').each(function(index, row) {
var innerObject = {};
var c = $('#myelem', row);
var isInputField = c.get(0).tagName.toUpperCase()=="INPUT";
var key =isInputField ? c.val().toUpperCase():c.html().toUpperCase();
jsonObject[key] = "bar";
});
这只是让你开始。您正在类输入行上使用。每个,但您尚未在提供的代码中显示该类。在本例中,我使用了class而不是id。用它来提前工作
您不应该有重复的ID
s。我认为有重复的ID是违反规范的。单个页面上的id应该是唯一的。重复的id可能导致未定义的行为。id在页面上应始终是全局唯一的@RuralJuror-ID可以更改,但在用户执行任何操作之前,它们是重复的。使用类。重复ID与问题无关。我仍然需要确定当前行所处理的元素类型,以确定是调用.val还是.htmlt。它们在第一次显示时不是唯一的。。。使用类。
$('.input-row .myelem')
$('.input-row').each(function(index, row) {
var innerObject = {};
var c = $('#myelem', row);
var isInputField = c.get(0).tagName.toUpperCase()=="INPUT";
var key =isInputField ? c.val().toUpperCase():c.html().toUpperCase();
jsonObject[key] = "bar";
});