我的网站上的许多锚标记的href属性中都有Windows“ .exe”文件链接。
如果在Mobile或Mac OS上单击了该锚标记,我想弹出一条消息:“对不起,仅Windows可用”。
任何href结尾为“ .exe”的锚标记都符合条件。如何在jQuery中选择此类锚标记?
例如:
<a href="http://www.example.com/downloads/abc.exe"></a>
应该由jQuery选择,因为它以“ .exe”结尾
但是
<a href="http://www.example.com/downloads/abc.jpg"></a>
应该由jQuery选择“不” ,因为它不以“ .exe”结尾。
我有以下代码:
if (/Mobi|Android/i.test(navigator.userAgent))
{
jQuery("a[href*='.exe']").attr("href","#popmake-1117");
}
但是它会在href的任何位置而不是最后检测到.exe。此外,它仅适用于手机,不适用于Mac。
答案 0 :(得分:1)
您可以使用indexOf()
检查其中是否包含指定字符串
$(window).ready(function(){
$("a").on("click",function(){
var href = $(this).attr("href");
if(href.indexOf("example.com/downloads") > -1 && href.indexOf(".exe")> - 1){
alert("Can download");
}else{
alert("Sorry only available on Windows");
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<a href="http://www.example.com/downloads/abc.exe">Download exe</a>
<a href="http://www.example.com/downloads/abc.apk">Download apk</a>
答案 1 :(得分:1)
寻找两个值的索引。
var link=$('a').attr('href');
if(link.indexOf('example.com/downloads')>-1 &&
link.indexOf('.exe')==link.length-4){
//do something
}
答案 2 :(得分:1)
更新:尽管.filter()
适用于更复杂的条件,但对于结尾为的,有效的docs([attribute$="value"]
):
if (/Mobi|Android/i.test(navigator.userAgent)) {
jQuery("a[href$='.exe']").attr("href","#popmake-1117");
}
初始答案
这就是我使用.filter()
的方式:
let exes = $('a[href]').filter(function(){
return $(this).attr('href').indexOf('.exe') > -1
});
// let's test it
exes.css({
border: '1px solid red'
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="#something.exe">has exe</a>
<a href="#something">no exe</a>
要检查.exe
是否以字符串结尾,可以使用substring
:
let exes = $('a[href]').filter(function(){
return $(this).attr('href').substr($(this).attr('href').length - 4) === '.exe'
});
// let's test it
exes.css({
border: '1px solid red'
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="#something.exe">has exe</a>
<a href="#something">no exe</a>
<a href="#something.exellent">exe not at the end of it</a>
答案 3 :(得分:1)
结合使用navigator.platform和indexOf
$(document).ready(function() {
$("a").click(function(e) {
var href = $(this).attr("href");
if (href.indexOf(".exe") > -1) {
console.log(navigator.platform);
if (navigator.platform.indexOf("Win") > -1) {
alert("You're using windows!");
//proceed
} else {
alert("Only available in Windows!");
e.preventDefault();
}
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="www.test/test.exe">Test.exe</a>
<a href="https://www.google.com">Google</a>