$(a,this).attr('href') 返回未定义
Posted
技术标签:
【中文标题】$(a,this).attr(\'href\') 返回未定义【英文标题】:$(a,this).attr('href') returns undefined$(a,this).attr('href') 返回未定义 【发布时间】:2011-08-02 23:20:44 【问题描述】:我正在使用 ajax 从 mysql 数据库加载一些数据...我的问题是,它获取我要加载的数据的 id,我已将 HREF 值设置为 id...所以一个例子是:
`<a href="16" title="View Story: ssasds">ssasds</a>`,
16 是我需要的 id 值...我的代码是:
$('.artefact').click(function()
var storyId = $('a',this).attr('href');
console.log(storyId);
当我检查控制台(萤火虫)时,它只是说未定义。请尝试并提供帮助,因为我尝试了其他获取数据的方法但变得混乱。
谢谢
【问题讨论】:
试试console.log($("a", this))
,也试试$(this).find("a")
可能你只需要使用 $(this).attr('href')
i4.ytimg.com/vi/VQ-nS9Q-prw/default.jpg" height ="90" > ssasds
@Neil Stewart:你必须链接(a),第一个没有 href 属性。所以要获得那个href,你可以使用:$('a', this).last().attr('href')。 (我认为这是正确的语法)
@Enoyhs 这是问题所在.. 谢谢 :)
【参考方案1】:
好像.artefact
有两个a
s。基于此:
$('.artefact').click(function ()
var storyId = $('a', this).filter("[href]").attr('href');
console.log(storyId);
);
编辑
再想一想,这看起来更干净:
$('.artefact').click(function ()
var storyId = $(this).find("a[href]").attr('href');
console.log(storyId);
);
【讨论】:
我是智障......已修复。我没有意识到 A)我确实拥有的链接实际上在另一个 DIV 中,该 DIV 也在人工制品中,但是 B)人工制品 div 中的第一个链接没有 HREF 属性。我很抱歉浪费时间:( @Neil:你不是在创建 YouTube 播放列表,是吗? 没有。我有一个大学课程来制作网络杂志类型的东西......我决定制作一个看起来像报纸的网站,我使用 php 和 jquery 从数据库中加载故事......报纸.nmyster.co .uk 如果你想检查一下。我是 jquery 的新手。 我的意思是 AJAX 和 PHP,但使用 Jquery 会更好【参考方案2】:.artefact
是链接吗?如果是,为什么要使用$('a', this)
而不仅仅是$(this)
?
【讨论】:
.artefact 是一个 div,里面有一张图片和一个锚标签。 对您的问题使用@Raynos 评论($(this).find('a')
部分)应该与该组合一起使用
[a, a 16] 当我在控制台中使用 ("a", this)) 时返回,那么我将如何单独获得 17,我可以使用 ( "a",this) 作为值,然后剪掉字符串最后三个字符,然后去掉]
嗯...看看这个 jsFiddle:jsfiddle.net/5vPhK - 是你的情况吗?它工作得恰到好处。【参考方案3】:
您在 div 元素中有 2 个链接(查看您提供的代码)。所以要获取href(如果该链接始终是div中的最后一个,您应该使用:
$('.artefact').click(function()
var storyId = $('a', this).last().attr('href');
console.log(storyId);
);
正如其他人所说,您也缺少亲子关系。
【讨论】:
【参考方案4】:试试这个:
var storyId = $(this).attr('href');
【讨论】:
【参考方案5】:你需要使用$(this).attr('href')
【讨论】:
【参考方案6】:是的,右括号有问题 http://jsfiddle.net/h7HuJ/1/ 我使用了你给定的 html 代码。
您在该 DIV 中有两个锚点,因此您需要指定选择哪一个。我使用了你的班级名称。
【讨论】:
【参考方案7】:@Neil Stewart:见——http://jsfiddle.net/Chby2/
您没有将 artefact
类添加到链接中,并且您的 jQuery 代码也缺少右括号:);
【讨论】:
我尝试了该链接,它有效...我尝试将其复制到我的脚本中,但它没有... awww :(。我是人工制品 div,被保存在另一个 div 中称为story_preivew。这些是在页面加载时使用PHP引入的......这与问题有什么关系吗?我知道如果你使用ajax获取数据,你需要使用.live()但我不认为那会在这种情况下是个问题以上是关于$(a,this).attr('href') 返回未定义的主要内容,如果未能解决你的问题,请参考以下文章
jquery 属性操作 attr () val() html()