2014-11-17 2 views
0

Я пытаюсь получить атрибут ID элемента clicked, звучит достаточно просто, но я получаю следующее сообщение об ошибке:

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 и своего рода тупик. Любая помощь очень ценится.

+5

показать соответствующий HTML, а –

+0

Что такое функция ToString()? Похоже, что он возвращает 'this' при вызове в глобальном контексте. – gvlasov

+0

'#blogposts_list ...' - это селектор id, возможно, правильный формат - # blogposts_list.posttag-xxx 'без пробела. – sayume

ответ

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(); 
}); 
+0

Спасибо, приятель, просто удалил метод toString, и все хорошо. Спасибо за объяснение тоже, очень полезно. Вы можете увидеть wip здесь www.matt-willett.co.uk/preview –

2

Для получения идентификатора конкретного элемента на событии щелчка ... просто использовать этот

$('#blogposts_filters > li > a').click(function(e) { 
    var id = $(this).attr('id'); 
}); 
Смежные вопросы