2010-10-18 32 views
2

任何人都可以告訴我爲什麼,即使當我的警報顯示我的正則表達式字符串匹配時,if語句不會被觸發?我有下面的示例代碼。提前致謝。我的正則表達式不符合條件語句

$(document).ready(function() { 
    $('div#primaryNavigation').find('a').each(function() { 
     var pattern = /my-link1|my-link2|my-link3|my-link4/; 
     var myWindow = window.location.pathname.match(pattern); 
     var href = $(this).attr('href').match(pattern); 
     alert('Show link and href until match: ' + myWindow + ' ' + href); 
     if (myWindow == href) { 
      //* Do Something * 
     }; 
    }); 
}); 

回答

0

你試過:

var pattern =/(my-link1|my-link2|my-link3|my-link4)/; 
+0

'/ my-link [1-4]/ – jAndy 2010-10-18 14:22:07

+2

@jAndy我相信mylink1等是佔位符 – Amarghosh 2010-10-18 14:23:40

4

.match()的返回值是不是字符串,它是一個字符串數組。當數組碰巧包含相同的值時,數組不會相等。

嘗試

if (myWindow[0] == href[0]) { ... } 

也許還應驗證返回值不爲空太:

if (myWindow && href && myWindow[0] === href[0]) { ... } 
+0

工作....感謝您的幫助! – Brent 2010-10-18 14:40:13

2

你的if語句出於同樣的原因失敗[1,2,3] == [1,2,3]失敗。您需要比較每個列表的內容,或者更簡單地比較myWindow [0] == href [0]。