2015-09-22 76 views
1

我正在使用SharePoint 2013(供參考),我有一些帶有標題的(.aspx)頁面。有沒有更好的方法來寫這個? [jQuery - 最佳實踐 - if語句]

我正在運行一個腳本,主要檢查我正在瀏覽的頁面的標題,如果它匹配我的任何查詢標題,則會將空白href =「variable-link」附加到與頁面相關的URL。

(即:如果頁面名稱包含單詞「家」則讓這個「更多信息」的鏈接去http://home-info.aspx

我有以下代碼這個工作。我想知道是否有更好,更有效的方式來寫這個。

/* Attach HREF to appropriate Function Page Events */ 

    if($("#pageTitle > span:contains('Americas')").length > 0) { 
     $("a.events-link").attr("href", 'Americas-Events.aspx');   
    } 
    if($("#pageTitle > span:contains('APAC')").length > 0) { 
     $("a.events-link").attr("href", 'APAC-Events.aspx');   
    } 
    if($("#pageTitle > span:contains('EMEA')").length > 0) { 
     $("a.events-link").attr("href", 'EMEA-Events.aspx');   
    } 
+0

假設您只希望一個條件匹配,也許可以改爲'else if'來保存一些評估,一旦您找到了匹配項。 – jfriend00

回答

2

我想我會使用一個數組來放入文本字​​符串,然後循環一個$.each。當它找到一個匹配時,它將使用return false中斷循環。

var options = ['Americas','APAC','EMEA']; 

$.each(options, function() { 

    var that = this.toString(), 
    present = $('#pageTitle span:contains(' + that + ')'); 

    if (present.length) { 
    $('a.events-link').attr('href', that + '-Events.aspx'); 
    return false; 
    } 
}); 
+0

這工作完美,並清理了我的牆上的文字。謝謝! –

+0

很高興爲您服務。 :-) – Shikkediel

0

只搜索一次該元素會更有效。

$("a.events-link").attr("href", function(i, href){ 
    // get text from title element and don't have to search dom for it again 
    var pageTitle = $('#pageTitle > span').text(); 
    // text comparison/href value setting 
    if(pagetTitle.indexOf('Americas') >-1){ 
     href = 'Americas-Events.aspx'; 
    }else if(pagetTitle.indexOf('APAC') >-1){ 
     href = 'APAC-Events.aspx'; 
    }else if(pagetTitle.indexOf('EMEA') >-1){ 
     href = 'EMEA-Events.aspx'; 
    } 
    // will return original href if no other matches 
    return href; 
}); 

上述用途略有不同的方法attr(function)

0

我不知道它是否是最好的方法或沒有,但你可以做這樣的事情:

var href=""; 
if($("#pageTitle > span:contains('Americas')").length > 0) { 
     href='Americas-Events.aspx';  
    }else if($("#pageTitle > span:contains('APAC')").length > 0) { 
     href='APAC-Events.aspx';   
    }else if($("#pageTitle > span:contains('EMEA')").length > 0) { 
     href='EMEA-Events.aspx';   
    } 

    $("a.events-link").attr("href", href); 
0
var href; 
var span = $("#pageTitle > span").text(); 
switch (span) { 
    case ('Americas'): 
     href= 'Americas-Events.aspx'; 

     break; 
    case ('APAC'): 
     href= 'APAC-Events.aspx'; 

     break; 
    case ('EMEA'): 
     href= 'EMEA-Events.aspx'; 

     break; 
$("a.events-link").attr("href", href); 

這是另一種使用開關的解 我不會告訴你它是最好的,但它是一個可能的解決方案。

相關問題