JQuery - 将.closest与document.getElementById()一起使用

时间:2014-02-24 07:34:13

标签: jquery getelementbyid closest

嘿伙计我有以下jQuery:

var $this   = $(this);
$this.closest('ul').find('li').removeClass('selected');

我正在尝试通过设置变量对具有相似ID的元素执行相同的操作:

var liID = $this.closest('li').attr('id');
var liID = liID.substring(0, liID.length - 1);

然后尝试在其上调用.closest('ul').find('li').removeClass('selected');。我试过这个:

document.getElementById(liID).closest('ul').find('li').removeClass('selected');

和此:

liID.closest('ul').find('li').removeClass('selected');

我并不感到惊讶,第二个没有用,但我无法弄清楚如何使第一个工作。有什么建议吗?

3 个答案:

答案 0 :(得分:1)

由于您有身份证,请直接使用

$("#" + liID).closest('ul').find('li').removeClass('selected');

document.getElementById(liID)将返回一个DOM元素。要使用jQuery方法,您必须将其转换为jQuery对象。你可以尝试

$(document.getElementById(liID)).closest('ul').find('li').removeClass('selected');

答案 1 :(得分:1)

document.getElementById(liID)返回一个没有jQuery相关方法的dom元素引用,因此你需要让该元素的jQuery对象使用jQuery方法。

您可以使用id-selector获取目标元素,然后使用closest()

$('#'+liID).closest('ul').find('li').removeClass('selected');

答案 2 :(得分:1)

document.getElementByID()返回一个DOM元素。

要使用closet,你需要一个jquery对象,所以用{包装document.getElementByID()来使它成为一个jquery对象。

它会起作用