2010-10-06 221 views
2

在我的Intranet頁面上,我有以.doc或.xls結尾的鏈接。字符串包含

如何使用jQuery來檢查,如果他們.xls結束,所以我可以加少許的JavaScript這些鏈接

編輯:

這不起作用:

$("a.resultLink").live('click', function(event) 
{ 
    // do something here 
    // ... 

    // change .doc link behaviour 
    var anchor = $("a:contains('.doc')"); 
    if (anchor){ 
     event.preventDefault(); 
     alert("this is a doc"); 
    } 

    // do something else here 
    // ... 
}); 

回答

5

使用Attribute Ends With Selector [name$=value]。例如,對類excel_link添加到所有鏈接到與.xls結尾的文件,你可以這樣做:

$("a[href$='.xls']").addClass("excel_link"); 

如果你已經有元素,那麼你只是想這樣做:

$("a.resultLink").live('click', function(event) 
{ 
    // do something here 
    // ... 

    // change .doc link behaviour 
    var anchor = $(this); 
    if (anchor.attr("href").match(/\.doc$/){ 
     event.preventDefault(); 
     alert("this is a doc"); 
    } 

    // do something else here 
    // ... 
}); 
+0

如何在if語句中使用它?如果$(「a [href $ ='。xls']」){//做些不同的事情} – oshirowanen 2010-10-06 10:58:57

+0

@oshirowanen:你從沒有充分利用jQuery表現力的問題推斷出來。你可以有一個函數doSomethingDifferent(),它對與模式匹配的所有選擇器做一些不同的事情。你不需要一個條件分支。不要遍歷你的鏈接;而是要弄清楚條件或案例,然後依次處理它們作爲集合。 – Tim 2010-10-06 11:04:32

+0

我如何利用jQuery的表現力? – oshirowanen 2010-10-06 11:05:54

0

如果它在文本中可以使用CSS定位器包含。該文件是在http://api.jquery.com/contains-selector/

var anchor = $("a:contains('.xls')"); 
if (anchor){ 
    anchor.addClass("myNewClass"); // Change this to what every jQuery command that you want 
} 

,如果你有許多這樣的那麼

$("a:contains('.xls')").each(function(index){ 
    $(this).addClass("myNewClass"); 
}); 
+0

我需要改變這種錨定標籤的行爲,所以我如何使用這個if語句即if($(「a:contains('.xls')」)){//用xls文件做一些不同的事情} – oshirowanen 2010-10-06 11:00:47

+0

我試過以下,它會影響所有的鏈接,而不是隻有.doc鏈接... var anchor = $(「a:contains('。doc')」); if(anchor){event_preventDefault(); 警報(「這是一個文檔」); } – oshirowanen 2010-10-06 11:17:47

+0

在原始問題中增加了當前腳本 – oshirowanen 2010-10-06 11:24:07

0

標準JavaScript(正則表達式)可以做到這一點:

if(str.match(/\.doc$/)) {dosomething();} 

其中str是文件名檢查

+0

在原始問題中增加了當前腳本 – oshirowanen 2010-10-06 11:24:30