2012-03-10 69 views
1

https://github.com/fnagel/jquery-ui的selectmenu裏面我爲每個選項設置了一個標題做爲一個圖標顯示。除了文件名包含空格的圖標以外,還能正常工作。沒有顯示圖標,如果文件名是一樣African Union.pngjQuery轉義空格

jquery的:

 $('select.flags').selectmenu({ 
      icons: [ 
       {find: '.icon'} 
      ], 
      bgImage: function() { 
       return 'url(' + $(this).attr("title") + ')'; 
      } 
     }); 

HTML:

<option value="African Union.png" class="icon" title="/img/icons/flags/African Union.png" >African Union</option> 

如果我沒有能夠得到它的jQuery的內部工作 - 如何逃生使用php的空白處? str_replace是唯一的選擇嗎?

+0

你在哪裏使用PHP? – 2012-03-10 09:54:28

回答

1

URLs in CSS可以是帶引號或單或雙引號括起來。如果不帶引號的,因爲你的情況,你需要逃避某些字符:

出現在帶引號的URI中的某些字符,如括號,空格字符,單引號(')和雙引號("),必須使用反斜槓進行轉義,以便生成的URI值爲URI標記:'\(','\)'。

所以:

'url(' + $(this).attr("title").replace(/(?=[()\s'"])/g, '\\') + ')' 

或者你放在引號中的URL,最好是雙引號plain single quotes are allowed in URLs

'url("' + $(this).attr("title") + '")' 
1

使用urlencode。首先,URL中不能有空格。

$filename = "African Union.png"; 
$url = urlencode($filename); 
$html_safe_url = htmlspecialchars($url); 

echo "<option value='$html_safe_url' class='icon' title='/img/icons/flags/$html_safe_url'>African Union</option>