Установка опции выбора из .css ('font-family')

0

У меня есть элемент выбора ниспадающего шрифта:

<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"), в то, что есть в опции, т.е. Двойная кавычка + одинарная кавычка + строка + одинарная кавычка + двойная кавычка?

благодаря

Теги:

4 ответа

0

Я попытался удалить одиночные кавычки из значений параметров в HTML, но я все еще не получил соответствие со значением, возвращаемым.css('font-family'). Это оказалось потому, что строка опций имела дополнительные пробелы между альтернативными шрифтами. Но даже когда я взял эти значения из опций, я не всегда получал соответствие: строка.css('font-value') выглядела идентично значению параметра, когда я размещал их поверх друг друга, но нет совпадение. Чтобы всегда получить совпадение, мне пришлось скопировать строку, возвращаемую.css('font-family'), и вставить ее в значение параметра HTML.

Спасибо за все предложения.

0

Это то, что вы хотите?

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/

  • 0
    Это не сработает, потому что некоторые значения списка SELECT не заключены в одинарные кавычки.
0

Один из способов заключается в конкатенации котировок:

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/

  • 0
    То же, что и ниже, это не сработает, так как некоторые значения списка SELECT не заключены в одинарные кавычки.
  • 0
    @ChrisP обновлен.
Показать ещё 3 комментария
0

Я бы разделил все одинарные кавычки из значений списка SELECT.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню