$(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 有两个as。基于此:

$('.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') 返回未定义的主要内容,如果未能解决你的问题,请参考以下文章

PHP语言 -- 数组常用函数

jquery 属性操作 attr () val() html()

jquery 属性

Jquery没有选择正确的href

关于jQuery操作复选框checkbox的attr无效的问题的解决方案

ios-scroll 和系统设置overflowscroll后卡顿