02.08.2017, 15:50
|
Кандидат Javascript-наук
|
|
Регистрация: 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>";
}
};
В первых двух случаях функция возвращает практически одинаковый элемент, отличается только класс, возможно ли объявить общий элемент, а в условии добавлять нужный класс?
|
|
02.08.2017, 15:57
|
Профессор
|
|
Регистрация: 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.
|
|
02.08.2017, 15:58
|
Кандидат Javascript-наук
|
|
Регистрация: 23.12.2016
Сообщений: 121
|
|
Nexus,
А как быть с классом?
|
|
02.08.2017, 15:59
|
Кандидат Javascript-наук
|
|
Регистрация: 23.12.2016
Сообщений: 121
|
|
В первом случае "rating-empty", во втором "rating-setted"
|
|
02.08.2017, 16:00
|
Профессор
|
|
Регистрация: 04.12.2012
Сообщений: 3,791
|
|
AlexTrader, поправил.
|
|
02.08.2017, 16:02
|
Профессор
|
|
Регистрация: 04.12.2012
Сообщений: 3,791
|
|
AlexTrader, можно переписать без тернарных выражений, будет понятней, но кода будет больше.
|
|
02.08.2017, 16:03
|
|
Профессор
|
|
Регистрация: 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>";
}
};
Не только класс ведь
|
|
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>";
}
};
|
|
02.08.2017, 16:21
|
Кандидат Javascript-наук
|
|
Регистрация: 23.12.2016
Сообщений: 121
|
|
Возможно ли создать элемент спан с аттрубутами, в return добавлять нужный класс к нему?
|
|
02.08.2017, 16:56
|
Профессор
|
|
Регистрация: 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;
};
|
|
|
|