js中有没有类似jquery的$(this)方法?

是这样的,页面有两个相同的ID,结果如<tr><input id="#div"></tr><tr><input id="#div"></tr>我要分别取出input中的值,$('tr').each(function(){$(this).find('#div')});这样每次循环的值都能正确对应上,我现在要将查找元素的方式换成js的(因为直接用jquery,可能是ID中含有特殊字符,获取不到,但用js能获取到),所以想用js中类似于$(this)的缩小查找范围
最新回答
给十年后的我

2024-10-31 11:39:36

在javascript中,DOM节点有这两个方法:

getElementsByTagName
getElementsByClassName

如果可以把里面的id='div'改成class='div',那么就可以这样写:

$('tr').each(function(){
    var subs = this.children;
    var target = this.getElementsByClassName('div')[0];
    // target is the element you want.
});



不过这里你用不上, 用你的代码举例可以尝试这样用:

$('tr').each(function(){
    var subs = this.children;
    var target;
    for(var i=0;i<subs.length;i++) {
        if(subs[i].id === 'div') {
            target = subs[i];
            break
        }
    }
    // target is the element you want.
});
在回忆里流浪

2024-10-31 14:54:35

1、id是唯一的,页面元素中不能有两个相同的id

2、$(this)这种写法 其实里面的this 就相当于 document.getElementById("id")
$(this)等同于 $(document.getElementById(“你的id”))
$(this)[0]等同于document.getElementById(“你的id”)
你依据你的情况选择自己方法
追问
我也只知道不能存在相同的问题,问题是现在存在了,我现在是问的是怎么用类似于jquery的$(this)取元素
追答
$(document.getElementById(“你的id”))
东城冷人

2024-10-31 21:40:33

获取不到是因为两个id相同吧,js获取的会是id第一次出现的元素
啭裑①群豞

2024-10-31 13:47:30

啥,两个相同的id-这样是最基本的错误,换js一样的,把id改成class吧
只有背影

2024-10-31 09:00:06

有呀,document.getElementById("id1");
这个就相当于$(this)