Jquery 如果嵌套div包含锚点,则可单击div
在使用现有示例时:Jquery 如果嵌套div包含锚点,则可单击div,jquery,Jquery,在使用现有示例时: $(".card").click(function() { window.location = $(this).find("a").attr("href"); return false; }); 这适用于“卡”的所有实例,但是我有几张没有锚的卡,这显然是一个问题 我只希望在div类的“card footer”中有一个锚点时才进行导航 到目前为止,我已经拼凑了: $(".features
$(".card").click(function() {
window.location = $(this).find("a").attr("href");
return false;
});
这适用于“卡”的所有实例,但是我有几张没有锚的卡,这显然是一个问题
我只希望在div类的“card footer”中有一个锚点时才进行导航
到目前为止,我已经拼凑了:
$(".features .card").click(function() {
if ( $(this:has("a.card-footer")) ) {
window.location = $(this).find("a.card-footer").attr("href");
return false;
}
});
这将它的作用域限定到我需要此事件的卡上,但是我还没有找到一个组合:has/.find()/.children()实际起作用
必须首先检查它,因为我的功能中有没有链接的卡片页脚,所以这是为了防止“未定义”
多谢各位
编辑:拼写
编辑以修复语法,谢谢:
这仍然会拾取页脚没有锚的卡,导致未定义的:/
编辑HTML示例:
您可以使用jquery
中的has()
函数:
将匹配的元素集减少为具有与选择器或DOM元素匹配的后代的元素集
您不必检查if
语句。只有当卡
具有锚定
元素时,点击事件
才会执行
$('.features .card').has('.card-footer > a').click(function() {
window.location = $(this).find('.card-footer > a').attr('href');
});
您可以在jquery
中使用has()
函数:
将匹配的元素集减少为具有与选择器或DOM元素匹配的后代的元素集
您不必检查if
语句。只有当卡
具有锚定
元素时,点击事件
才会执行
$('.features .card').has('.card-footer > a').click(function() {
window.location = $(this).find('.card-footer > a').attr('href');
});
您的选择器是
a.card-footer
。这意味着“一个a
元素和卡片页脚
类”。根据您的HTML结构,您真正想要的是“拥有一个具有a
子代的card footer类的元素”
您的选择器是
a.card-footer
。这意味着“一个a
元素和卡片页脚
类”。根据您的HTML结构,您真正想要的是“拥有一个具有a
子代的card footer类的元素”
这很有效
谢谢Onyx和Jacob这很有效
感谢Onyx和Jacob您的HTML是否与我们假设的有所不同?对我来说似乎还可以:啊,是的,我在上面贴了一个JSFIDLE。。。也许我对a.card-footer有误解,它是一个div,类card-footer包含一个锚。谢谢你的HTML和我们想象的不一样吗?对我来说似乎还可以:啊,是的,我在上面贴了一个JSFIDLE。。。也许我对a.card-footer有误解,它是一个div,类card-footer包含一个锚。感谢使用console.log('true')实现此功能:我试图在上面发布一个简化的HTML示例,但没有任何效果,不过这是一个标准的bootstrap 4.1卡,其部分包装器被归类为“功能”。添加了一个jsfiddleabove@ironchefbadass,对不起,你的描述有点误导。我在HTML代码片段之后更新了答案。因此,使用console.log('true')不会呈现任何内容:/我试图发布一个简化的HTML示例,但没有任何效果,不过这是一个标准的bootstrap 4.1卡,其部分包装器被归类为“功能”。添加了一个jsfiddleabove@ironchefbadass,对不起,你的描述有点误导。我在HTML代码片段之后更新了答案。我刚刚弄明白了,将此标记为答案。谢谢你们两位。我刚刚想好了,把这个作为答案。谢谢你们两位。
$('.features .card').has('.card-footer a').click(function() {
window.location = $(this).find('.card-footer a').attr('href');
});
$('.features .card').has('.card-footer a').click(function() {
console.log('true');
window.location = $(this).find('.card-footer a').attr('href');
});