2010-10-06 162 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