2010-12-10 65 views
0

(非常新的JavaScript jQuery)if语句语法在JavaScript jQuery。每个函数

if语句是否可以包含其他函数的集合,特别是.each函数?如果是的话,我的实施有什么问题吗?

var string2 = "domain"; 
var mainpath = (window.location.href); 

if (mainpath.indexOf(string2)) { 

    $("#topnav a").each(function(){       
     var thishref = $(this).attr('href');  
     $(this).attr({href: thishref + '?lnkid=tnav'}); 
    }); 

    $("#nav a").each(function(){        
     var thishref = $(this).attr('href');  
     $(this).attr({href: thishref + '?lnkid=pnav'}); 
    }); 

} 

我想要做的是只在页面位于我的域(而不是在cms的开发空间内)时才在if语句内运行代码。 - 感谢

+0

不严格有关你的问题,但你可以直接比较'window.location.host' – Gareth 2010-12-10 15:07:14

+0

if语句可以包含任何其他语句,例如块语句,它又包含一个零或多个语句的列表。 – 2010-12-10 15:20:00

回答

0

确定就可以了。你这样做基本上是正确的。一个建议:

要明确你如果有条件的话,那么这样做

if (mainPath.indexOf(string2) !== -1) {... 

} 
0

是的,没有错。但它可以用下面的网址很容易受骗:

http://www.other.tld/?domain

0

完全有效的使用if有条件地运行代码。虽然有似乎是你的条件的问题:

if (mainpath.indexOf(string2)) 

主路径中的字符串2的指数可以0这会防止你的代码执行,并且肯定不是你想要的。

而是测试是这样的:

if (mainpath.indexOf > -1) ... 
+0

在这种情况下(因为window.location.href的保证输出),这只会发生在域名为“http”的情况下,所以虽然这是值得一提的,但这不是特别的问题 – Gareth 2010-12-10 15:15:25

+0

@Gareth授予,这很难曾经发生过(谁会命名他的域名httpfoo,对吧?)。毕竟这可能是一个容易被忽视的失败来源,所以我们应该以正确的方式去做,你不觉得吗? – aefxx 2010-12-10 16:30:57

0

作为一个建议,你可以将查询添加到这样的每一个环节:

$("#topnav a").each(function(){       
    this.search = 'lnkid=tnav';  
}); 

没有必要对涉及获取HREF一种迂回的方式属性,附加到它并放回。

演示:http://jsfiddle.net/3ZpMz/1/

+0

感谢您的支持!我也在这部分代码中挣扎。我希望我知道它为什么/如何运作,但我认为它工作得很好。 – Kat 2010-12-13 13:47:31