2011-12-23 32 views
2

我有一個<div id="bread"></div>,我試圖顯示其中一個字符串包含Tab3 »的麪包屑。使用jQuery從字符串中刪除'»'

它像Tab1>Tab2>Tab3 »>除了>Tab4arrow-right.png圖像。

我想從Tab3 »刪除&raquo»

我要搜索如果所選選項卡»或它&raquo,如果是的話那麼我想,這樣Tab3 »成爲Tab3""來取代它。

我試過以下,但它似乎並沒有工作。

$("document").ready(function() { 
    var crumbs = $("a.selected"); 

    jQuery.each(crumbs, function() { 

     if(this != crumbs.get([0])) { 
      $("#bread").append("&nbsp;");   
     }   
     $("#bread").append("<img src='<c:url value="/resources/images/arrow-right.png" />' />" + "&nbsp;"); 

      var crumb = $(this).html(); 
      var slicedCrumb; 
      if(crumb.indexOf(' &raquo; ') != -1) { 
       slicedCrumb = $(this).html().replace(' &raquo; ', '');    
       $("#bread").append(slicedCrumb); 
      } 
      else { 
       $("#bread").append(crumb); 
      } 

    }); 
}); 

我也試過在&raquo;的地方使用»但din't似乎擦出火花。

$("document").ready(function() { 
    var crumbs = $("a.selected"); 

    jQuery.each(crumbs, function() { 

     if(this != crumbs.get([0])) { 
      $("#bread").append("&nbsp;");   
     }   
     $("#bread").append("<img src='<c:url value="/resources/images/arrow-right.png" />' />" + "&nbsp;"); 

      var crumb = $(this).html(); 
      var slicedCrumb; 
      if(crumb.indexOf(' » ') != -1) { 
       slicedCrumb = $(this).html().replace(' » ', '');     
       $("#bread").append(slicedCrumb); 
      } 
      else { 
       $("#bread").append(crumb); 
      } 

    }); 
}); 

我花了相當一段時間閱讀給定主題上的其他帖子,但不知何故,我無法得到它的工作。有人能幫我理解我在這裏錯過了什麼嗎?我正在使用jquery-1.5.js來運行此代碼。我是否需要使用更新版本的jquery或任何其他庫以及它的工作?

+0

如果你可以用JSfiddle製作HTML和你試過的JS,那會讓你更容易。 – 2011-12-23 23:22:02

+0

帶'''的值是否來自您控制的來源(例如CMS)?也許你可以通過從源頭消毒數據來節省很多努力。 – 2011-12-23 23:22:25

+0

@saratis:我不知道JSfiddle之前是什麼意思,但在Google搜索後我想我可以嘗試這樣做。謝謝。我對JavaScript和jquery知之甚少。 – skip 2011-12-23 23:27:45

回答

3
slicedCrumb = $(this).html().replace(/\»/g, ''); 

的重要組成部分,是轉義字符»。此外,我添加了全局(g)標誌,以便如果有多個與正則表達式匹配的實例,它們將全部被刪除。

這裏是一個演示:http://jsfiddle.net/YXXZs/1/

UPDATE

如果你想檢查一個字符試圖取代它,那麼你可以使用.match()之前就存在:

var text = $(this).html(); 
if (text.search(/\»/) > -1) { 
    slicedCrumb = text.replace(/\»/g, ''); 
} 

這裏演示:http://jsfiddle.net/YXXZs/4/

Docs for .match()https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/match

+0

'\t \t \t如果(crumb.indexOf('\»')!= -1){ \t \t \t \t slicedCrumb = $(本)。html的() .replace(/ \»/克, ''); \t \t \t \t \t \t \t \t $( 「#麪包」)追加(slicedCrumb); \t \t \t}'不工作我如何測試是否麪包屑數組中的元素有'»'嗎? – skip 2011-12-23 23:41:27

+0

'crumb.search('\'')!= -1'或'crumb.search(/ \ /)!= -1'也不起作用。我不確定我用過的表達是否正確。我是JavaScript或jquery的新手。 – skip 2011-12-23 23:45:35

+1

@skip'if(crumb.search(/ \ /)> -1){...}'應該可以工作,查看我發佈在** update **中的演示到我的答案。 – Jasper 2011-12-24 00:06:16

0

嘗試使用

slicedCrumb = $(this).html().replace('/[&]raquo[;]/ ', ''); 
+0

'\t \t \t如果(crumb.indexOf( '/ [&] RAQUO [;] /')!= - 1){ \t \t \t \t slicedCrumb = $(本)的.html()代替('/ [ &] raquo [;] /',''); \t \t \t \t \t \t \t \t $( 「#麪包」)追加(slicedCrumb)。 \t \t \t}'不工作要麼:(。 – skip 2011-12-23 23:48:40