这是我的代码:
$.get("http://www.roblox.com/catalog/", function(onWebsite) {
console.log($(onWebsite).find('.name.notranslate')[0].attr("href"));
});
每当我运行它时,它都不会将任何内容记录到控制台,它只是说:" Object {readyState:1}"。但是,如果我删除了.attr(" href"),它就可以了。我的语法有问题吗?
答案 0 :(得分:2)
由于.attr()
是一个jQuery函数,你需要将它与jQuery对象一起使用。
使用
$(onWebsite).find('.name.notranslate').attr("href")
根据您当前的代码$(onWebsite).find('.name.notranslate')[0]
将返回您没有.attr()
方法的基础DOM元素。
您可以使用href
属性或Element.getAttribute()
方法
$(onWebsite).find('.name.notranslate')[0].href
OR
$(onWebsite).find('.name.notranslate')[0].getAttribute('href')
答案 1 :(得分:0)
也许试试:
$.get("http://www.roblox.com/catalog/", function(onWebsite) {
console.log(onWebsite.find('.name.notranslate')[0].attr("href"));
});
onWebsite不能用jQuery选择器包装,因为它是从函数返回的。
答案 2 :(得分:0)
让我们尝试这种方法:
var a;
$.get("http://www.roblox.com/catalog/", function(onWebsite) {
a = $(onWebsite).find('.name.notranslate')[0];
console.log(a);
});
你会得到
<a class="name notranslate" href="/Headless-Horseman-item?id=134082613" title="Headless Horseman">Headless Horseman</a>
所以var a是带有href属性的HTML标签。 HTML标记没有jQuery方法 - 只从DOM中选择jQuery对象或“包装/选择HTML”
您可以:
.href
获取href a
以获取:$(a).attr('href')
所以最终代码将是(变体1更好):
var a;
$.get("http://www.roblox.com/catalog/", function(onWebsite) {
a = $(onWebsite).find('.name.notranslate')[0].href
console.log(a);
});
或不创建临时变量
$.get("http://www.roblox.com/catalog/", function(onWebsite) {
console.log($(onWebsite).find('.name.notranslate')[0].href);
});