Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.08.2017, 15:50
Кандидат Javascript-наук
Отправить личное сообщение для AlexTrader Посмотреть профиль Найти все сообщения от AlexTrader
 
Регистрация: 23.12.2016
Сообщений: 121

Убрать повторяющиеся элементы
Доброго времени суток, форумчане, подскажите пожалуйста, как изменить функцию, убрав повторяющийся элемент?
app.getRatingButton = function (item) {
        if (item.sourcePlaceId !== 3) {
            if(item.rating === 0)
                return "<span class='action-tooltip  rating-empty'" +
                           "data-role='tooltip'" +
                           "data-width='200'" +
                           "data-show-on='click'" +
                           "data-auto-hide='false'" +
                           "data-position='left'" +
                           "data-bind='value: rating.content, events: { show: rating.onShow, hide: rating.onHide }'></span>";
            else
                return "<span class='action-tooltip  rating-setted'" +
                            "data-role='tooltip'"+
                            "data-width='200'"+
                            "data-show-on='click'"+
                            "data-auto-hide='false'"+
                            "data-position='left'" +
                            "data-bind='value: rating.content, events: { show: rating.onShow, hide: rating.onHide }'>" + item.rating +
                        "</span>";
        } else {
            return "<span class=\"rating-disabled\"></span>";
        }
    };

В первых двух случаях функция возвращает практически одинаковый элемент, отличается только класс, возможно ли объявить общий элемент, а в условии добавлять нужный класс?
Ответить с цитированием
  #2 (permalink)  
Старый 02.08.2017, 15:57
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

AlexTrader,
app.getRatingButton = function (item) {
	if (item.sourcePlaceId === 3) 
		return "<span class=\"rating-disabled\"></span>";
	
	return 
		"<span class='action-tooltip  rating-"+(item.rating===0?'empty':'setted')+"'" +
		   "data-role='tooltip'" +
		   "data-width='200'" +
		   "data-show-on='click'" +
		   "data-auto-hide='false'" +
		   "data-position='left'" +
		   "data-bind='value: rating.content, events: { show: rating.onShow, hide: rating.onHide }'"+
		">"+(item.rating!==0?item.rating:'')+"</span>";
};

Последний раз редактировалось Nexus, 02.08.2017 в 16:00.
Ответить с цитированием
  #3 (permalink)  
Старый 02.08.2017, 15:58
Кандидат Javascript-наук
Отправить личное сообщение для AlexTrader Посмотреть профиль Найти все сообщения от AlexTrader
 
Регистрация: 23.12.2016
Сообщений: 121

Nexus,
А как быть с классом?
Ответить с цитированием
  #4 (permalink)  
Старый 02.08.2017, 15:59
Кандидат Javascript-наук
Отправить личное сообщение для AlexTrader Посмотреть профиль Найти все сообщения от AlexTrader
 
Регистрация: 23.12.2016
Сообщений: 121

В первом случае "rating-empty", во втором "rating-setted"
Ответить с цитированием
  #5 (permalink)  
Старый 02.08.2017, 16:00
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

AlexTrader, поправил.
Ответить с цитированием
  #6 (permalink)  
Старый 02.08.2017, 16:02
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

AlexTrader, можно переписать без тернарных выражений, будет понятней, но кода будет больше.
Ответить с цитированием
  #7 (permalink)  
Старый 02.08.2017, 16:03
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

app.getRatingButton = function (item) {
        if (item.sourcePlaceId !== 3) {
            if(item.rating === 0)
                return "<span class='action-tooltip  rating-empty'" +
                           "data-role='tooltip'" +
                           "data-width='200'" +
                           "data-show-on='click'" +
                           "data-auto-hide='false'" +
                           "data-position='left'" +
                           *!*"data-bind='value: rating.content, events: { show: rating.onShow, hide: rating.onHide }'></span>";*/!*
            else
                return "<span class='action-tooltip  rating-setted'" +
                            "data-role='tooltip'"+
                            "data-width='200'"+
                            "data-show-on='click'"+
                            "data-auto-hide='false'"+
                            "data-position='left'" +
*!*"data-bind='value: rating.content, events: { show: rating.onShow, hide: rating.onHide }'>" + item.rating +
                        "</span>";*/!*
        } else {
            return "<span class=\"rating-disabled\"></span>";
        }
    };

Не только класс ведь
Ответить с цитированием
  #8 (permalink)  
Старый 02.08.2017, 16:04
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

AlexTrader,
app.getRatingButton = function (item) {
        if (item.sourcePlaceId !== 3) {
                return "<span class='action-tooltip  rating-"+(item.rating? "setted" : "empty")+"'" +
                            "data-role='tooltip'"+
                            "data-width='200'"+
                            "data-show-on='click'"+
                            "data-auto-hide='false'"+
                            "data-position='left'" +
                            "data-bind='value: rating.content, events: { show: rating.onShow, hide: rating.onHide }'>" + (item.rating || "") +
                        "</span>";
        } else {
            return "<span class=\"rating-disabled\"></span>";
        }
    };
Ответить с цитированием
  #9 (permalink)  
Старый 02.08.2017, 16:21
Кандидат Javascript-наук
Отправить личное сообщение для AlexTrader Посмотреть профиль Найти все сообщения от AlexTrader
 
Регистрация: 23.12.2016
Сообщений: 121

Возможно ли создать элемент спан с аттрубутами, в return добавлять нужный класс к нему?
Ответить с цитированием
  #10 (permalink)  
Старый 02.08.2017, 16:56
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

AlexTrader, не понял, что Вы имеете ввиду.
Можно переписать так, тогда манипулировать тегом будет проще.
app.getRatingButton = function(item) {
	if (item.sourcePlaceId === 3) 
		return "<span class=\"rating-disabled\"></span>";
	
	var span=document.createElement('span'),
		attrs={
			'data-role':'tooltip',
			'data-width':'200',
			'data-show-on':'click',
			'data-auto-hide':'false',
			'data-position':'left',
			'data-bind':'value: rating.content,events:{ show: rating.onShow,hide:rating.onHide }',
			'class':'action-tooltip  rating-empty'
		};
			
	if(item.rating!==0){
		span.innerHTML=item.rating;
		attrs['class']=attrs['class'].replace('empty','setted');
	};
	for(var name in attrs){
		if(attrs.hasOwnProperty(name))
			span.setAttribute(name,attrs[name]);
	};
	
	return span;
};
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Исключить из переменной elems все элементы которые имеют родственные элементы с класс Fenix-77 Общие вопросы Javascript 2 12.04.2016 16:20
Как вернуть div и все вложенные в него элементы в первоначальное состояние? lucky89 Общие вопросы Javascript 17 26.02.2015 18:41
Как выбрать из json-массива только не повторяющиеся элементы? Dimaz Общие вопросы Javascript 3 19.12.2012 00:11
Выбрать элементы, в которые вложен элемент с id. Вадимчег jQuery 3 24.11.2012 10:38
Убрать за экран элементы тега form Lucifer777 (X)HTML/CSS 1 03.11.2011 01:53