Javascript 如何在jQuery中区分DOM元素

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

我有一些代码在表的每一行上循环并创建一个json对象。行中的元素可以是以下任一项:

<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";
});