$(this).parent()。attr('id')获取'[object window]'而不是元素ID

时间:2014-11-17 06:16:11

标签: javascript jquery this

我试图获取点击元素的ID属性,听起来很简单,但我收到以下错误:

Uncaught error: Syntax error, unrecognized expression: .posttag- Window]

这是我编写的代码

$('#blogposts_filters > li > a').click(function(e) { var $this = $(this), thistag = toString($this.parent().attr('id')).substring(7); console.log(thistag) //returns [Object Window] if substring(0) // Filter through $('#blogposts_list .posttag-' + thistag).toggleClass('hidden'); e.preventDefault(); });

尝试了一些不同的东西,但我对js / jquery很新,有点难过。 非常感谢任何帮助。

2 个答案:

答案 0 :(得分:3)

首先,除非你已经将toString函数重新定义为其他东西(在这种情况下我们需要看到它!),你可能实际上并不需要它。数字将自己投射到字符串,例如'string' + 123 == 'string123'

此外,toString实际上是一种方法!所以你所做的就是在全球范围内调用它,window.toString()总是返回[Object Window]。不是你想要的。

因此,只需使用.attr('id')并信任JavaScript即可将数字转换为字符串:

$('#blogposts_filters > li > a').click(function(e) {
    var $this = $(this),
        thistag = $this.parent().attr('id');
    // Filter through
    $('#blogposts_list .posttag-' + thistag).toggleClass('hidden');
    e.preventDefault();
});

答案 1 :(得分:2)

在点击事件中获取特定元素的ID ...只需使用此

$('#blogposts_filters > li > a').click(function(e) {
   var id = $(this).attr('id');
});