我在使用使用JS 函数在一个字符串中查找两个不同值的if
语句时遇到问题。indexOf
如果它没有找到这两个值,则 if 语句继续执行其功能。
我的$.each
功能的目的是跟踪出现在我的网站上的所有外部链接,并排除所有包含“sony”和“/pro”字样的内部链接。例外需要是这两个链接(http://www.response.pro.sony.eu/和http://www.assets.pro.sony.eu/)。
所以我想要做的是避免执行我的函数(分配 onClick=""),如果if
语句indexOfs
找到我给它的两个值。这是 '/pro' 和 'sony'
小提琴:http: //jsfiddle.net/qj482/1/
我提供了一个 JSFiddle,其中包含我的示例代码。我在那里有一些链接可以测试并确保该过程有效,但目前还没有。
在小提琴中,我需要以下链接变为绿色(被跟踪),我也会列出需要避免的链接。
http://www.pinewood.com/ - Tracked (green)
http://www.sony.co.uk/pro/hub/home - Avodied (red)
http://www.sony.co.uk/pro/hub/tree - Avodied (red)
http://www.sony.co.uk/pro/page/foo - Avodied (red)
http://www.sony.co.uk/pro/page/bar - Avodied (red)
http://www.response.pro.sony.eu/ - Tracked (green)
http://www.assets.pro.sony.eu/ - Tracked (green)
http://www.supermarsh.co.uk/pro-series - Tracked (green)
http://www.sony.co.uk/ - Avoided (red, has special .avoid class)
http://www.specialsite.com/ - Avoided (red, has special .avoid class)
请注意,特殊的“.avoid”类仅存在于客户端希望能够在他们想要覆盖检测时避免任何链接。
我怎样才能使这项工作?这是我的标记和 JS
HTML/标记
<p>Adipiscing elit. Ut diam eget lectus sit amet elementum orci tincidunt. Aenean nibh mi, rhoncus eget placerat sit amet, iaculis sed sapien. Aenean porta felis vel nibh pretium ac pretium tortor auctor. Nam et ipsum est. Vestibulum tristique vulputate condimentum. Pellentesque vel justo tellus. Phasellus velit sapien, <a href="http://www.pinewood.com">http://www.pinewood.com</a> Integer eros enim, vulputate vitae dignissim eget, <a href="http://www.sony.co.uk/" class="avoid">www.sony.co.uk/</a> quis augue. Curabitur <a href="http://www.sony.co.uk/pro/hub/home">www.sony.co.uk/pro/hub/home</a> lorem <a href="http://www.sony.co.uk/pro/hub/tree">www.sony.co.uk/pro/hub/tree</a> orem <a href="http://www.sony.co.uk/pro/page/foo">www.sony.co.uk/pro/page/foo</a> lorem <a href="http://www.sony.co.uk/pro/page/bar">www.sony.co.uk/pro/page/bar</a> molestie, <a href="http://www.response.pro.sony.eu">www.response.pro.sony.eu</a> sem <a href="http://www.assets.pro.sony.eu">www.assets.pro.sony.eu</a> vitae <a class="avoid" href="http://www.specialsite.com">www.specialsite.com.</a> lobortis, sapien nisl euismod purus, non commodo lacus est vel turpis. Cras <a href="http://www.supermarsh.co.uk/pro-series">www.supermarsh.co.uk/pro-series</a> iaculis sagittis nisl, sed ultricies erat condimentum quis.</p>
JavaScript/jQuery
//:not("avoid") skips any <a> tags with the class '.avoid'
$('a[href*="http://"]:not(".avoid")').each(function(index, element) {
var hrefContent = $(this).attr('href');
domainName = hrefContent.replace('http://','');
console.log(domainName);
//Skip adding GA tracking if href contains the word sony
if(domainName.indexOf("/pro") == -1 && domainName.indexOf("sony") == -1)
{
$(this).attr('onclick','_gaq.push(["_trackEvent","Press Centre","email","'+domainName+'"]) ;_gaq.push(["b._trackEvent","Press Centre","email","'+domainName+'"]);').addClass('tracked');
} else {
$(this).addClass('avoided')
}
});
更新
感谢所有回复,但使用 || 当我添加一个简单的内部链接(www.sony.co.uk)时,运算符似乎只能部分工作,应该避免并变成红色,因为它包含“索尼”这个词。相反,它变成绿色并被跟踪。任何人都可以纠正这个问题吗?
请看这个小提琴:http: //jsfiddle.net/qj482/11/