$ (a, this) .attr ('href') возвращает неопределенное значение - PullRequest
3 голосов
/ 11 апреля 2011

Я использую ajax для загрузки некоторых данных из базы данных mysql ... Моя проблема заключается в получении идентификатора для данных, которые я хочу загрузить, я установил значение HREF в качестве идентификатора ... поэтому пример:

`<a href="16" title="View Story: ssasds">ssasds</a>`,

16 - это значение идентификатора, которое мне нужно ... мой код:

$('.artefact').click(function()
                {

                var storyId = $('a',this).attr('href');
                console.log(storyId);
                               }

когда я проверяю консоль (firebug), она просто говорит undefined. пожалуйста, попробуйте и помогите, так как я пробовал другие способы получения данных, но получается грязно.

спасибо

Ответы [ 7 ]

7 голосов
/ 11 апреля 2011

Похоже, что .artefact имеет два a с. На основании этого:

$('.artefact').click(function () {
    var storyId = $('a', this).filter("[href]").attr('href');
    console.log(storyId);
});

EDIT

Если подумать, это выглядит чище:

$('.artefact').click(function () {
    var storyId = $(this).find("a[href]").attr('href');
    console.log(storyId);
});
2 голосов
/ 11 апреля 2011

У вас есть 2 ссылки в элементе div (глядя на предоставленный вами код).Таким образом, чтобы получить href (если эта ссылка всегда является последней в div, вы должны использовать:

$('.artefact').click(function() {
  var storyId = $('a', this).last().attr('href');
  console.log(storyId);
});

И, как уже говорили другие, вы также пропустили парентез.

2 голосов
/ 11 апреля 2011

Является ли .artefact ссылкой?Если да, зачем использовать $('a', this) вместо $(this)?

1 голос
/ 11 апреля 2011

Да, закрывающая скобка ошибочна http://jsfiddle.net/h7HuJ/1/ Я использовал заданный вами HTML-код.

У вас есть два якоря внутри DIV, поэтому вам нужно указать, какой из них выбрать.Я использовал ваше имя класса.

1 голос
/ 11 апреля 2011

вам нужно использовать $(this).attr('href')

1 голос
/ 11 апреля 2011

Попробуйте это:

var storyId = $(this).attr('href');
0 голосов
/ 11 апреля 2011

@ Нил Стюарт: см. - http://jsfiddle.net/Chby2/

Вы не добавили класс artefact к ссылке, и в вашем коде jQuery также не было закрывающей скобки: );

...