我有很多div
s,有时包含链接。我想检查一下他们是否有链接。这是我的尝试:
var container = $(this).closest('.content').find('.text');
//Check if text contains a tags
if(container+':has(a)'){
alert('contain link');
}
else{
alert('no link found'); //Alert "contain link" even if no link is found.
}
通过container.html()
我可以看到包含锚标记的container
的确切内容,但我上面的代码总是说它无法找到锚标记。
有人能告诉我我做错了吗?
答案 0 :(得分:8)
更改为:
if(container.find("a").length){ ...
container
是一个jquery对象,.find()
是该对象的一个函数,用于查找其中的元素。长度大于0意味着它会找到一个锚标记,它将评估为真。
修改强>
另外,解释为什么你的例子不起作用。执行container+':has(a)'
时,您正在执行字符串连接,该对象在您的对象上运行toString()
(将其转换为“[object Object]”)。所以你最终会得到字符串“[object Object]:has(a)”,它总是会评估为true。
答案 1 :(得分:1)
您可以使用选择器的length
属性来确定是否找到了任何元素。试试这个:
var $container = $(this).closest('.content').find('.text');
if ($('a', $container).length) {
alert('Contains links');
}
else {
alert('No links found');
}
答案 2 :(得分:1)
更改
if(container+':has(a)'){
到
if(container.has('a').size()){
container是一个jquery对象,而不是选择器字符串
答案 3 :(得分:0)