У меня есть элемент выбора ниспадающего шрифта:
<select id="font">
<option selected value="Font"></option>
<option selected="selected" value="Arial">Arial</option>
<option value="Calibri">Calibri</option>
<option value="Century">Century</option>
<option value="'Comic Sans MS'">Comic</option>
<option value="'Courier New, Courier, mono'">Courier New</option>
<option value="'Geneva, sans-serif'">Geneva</option>
</select>
Я хотел бы прочитать семейство шрифтов css для элемента, cellContent $ ниже и выбрать эту опцию в select:
var fontFamily = cellContent$.css('font-family');
$('#font').val(fontFamily);
Код выше не работает, потому что fontFamily возвращается как "Courier New, Courier, mono", а параметр val должен быть именно тем, что есть в опции. Например, приведенный ниже код работает:
$('#font').val("'Courier New, Courier, mono'");
Итак, как я могу получить вещь, возвращаемую css ("font-family"), в то, что есть в опции, т.е. Двойная кавычка + одинарная кавычка + строка + одинарная кавычка + двойная кавычка?
благодаря
Я попытался удалить одиночные кавычки из значений параметров в HTML, но я все еще не получил соответствие со значением, возвращаемым.css('font-family'). Это оказалось потому, что строка опций имела дополнительные пробелы между альтернативными шрифтами. Но даже когда я взял эти значения из опций, я не всегда получал соответствие: строка.css('font-value') выглядела идентично значению параметра, когда я размещал их поверх друг друга, но нет совпадение. Чтобы всегда получить совпадение, мне пришлось скопировать строку, возвращаемую.css('font-family'), и вставить ее в значение параметра HTML.
Спасибо за все предложения.
Это то, что вы хотите?
var fontFamily = "'" + cellContent$.css('font-family') + "'";
$('#font').val(fontFamily);
РЕДАКТИРОВАТЬ:
Вам нужен такой подход:
var optionArray = $("#font>option").map(function() { return $(this).val(); });
var fontFamily = cellContent$.css('font-family');
for(var i=0;i<optionArray.length; i++){
if(optionArray[i].indexOf(fontFamily)>0){
$('#font').val(optionArray[i]);
}
}
Скрипт здесь: http://jsfiddle.net/eSwj2/1/
Один из способов заключается в конкатенации котировок:
var fontFamily = "'" + cellContent$.css('font-family') + "'";
fontFamily = fontFamily.replace(/''/g, "'");
$('#font').val(fontFamily);
Обновление: узнав, что у вас есть неопределенные цитаты, вы можете сначала отключить все параметры от своих котировок, а затем применить значение:
$('#font').children("option").each(function() {
$(this).attr("value", $(this).attr("value").replace(/'/g, ""));
});
var fontFamily = cellContent$.css('font-family');
fontFamily = fontFamily.replace(/'/g, "");
$('#font').val(fontFamily);
Смотрите эту скрипту: http://jsfiddle.net/YJ2Ns/
SELECT
не заключены в одинарные кавычки.
Я бы разделил все одинарные кавычки из значений списка SELECT
.
SELECT
не заключены в одинарные кавычки.