我正在重写一些Backbone代码,并且遇到了一个奇怪的错误。这是我的代码:
App.Views.ExploreCard.user = App.Views.ExploreCard.Parent.extend({
name: 'user',
allowUntyped: true,
classes: 'explore-person-box shadowed',
onclick: function() {
window.location.assign(this.data.profilePath);
},
postRender: function() {
App.HCS.redrawHCS(this.$el.find('.score'), this.$el.find('.user-card-avatar-round'));
}
});
和
App.HCS = {
redrawHCS: function(elements) {
elements.each(function(index, value, border) {
var score = $(value).html();
console.log(value);
console.log(border);
if ( score <= 33 && score >= 1 ) {
$(value).css("background-color", "#ff4013");
$(border).css("border", "3px solid #ff4013;");
}
else if ( score <= 66 && score >= 34 ) {
$(value).css("background-color", "rgb(92, 154, 0)");
$(border).css("border", "3px solid rgb(92, 154, 0)");
}
else if ( score <= 99 && score >= 67 ) {
$(value).css("background-color", "#fb9f00");
$(border).css("border", "3px solid #fb9f00;");
}
});
}
};
当我对值和边框进行
console.log
设置时,边框总是不确定的。作为健全性检查,我在这一行中切换了参数:从:
App.HCS.redrawHCS(this.$el.find('.score'), this.$el.find('.user-card-avatar-round'));
至:
App.HCS.redrawHCS(this.$el.find('.user-card-avatar-round'), this.$el.find('.score'));
不管顺序如何,第二个参数边界始终是不确定的。
我已经对Backbone
$el
进行了一些谷歌搜索,但未找到任何修复方法。 最佳答案
您的代码有些混乱。您正在使用两个参数调用App.HCS.redrawHCS
:
App.HCS.redrawHCS(this.$el.find('.score'), this.$el.find('.user-card-avatar-round'));
但是
redrawHCS
只看一次参数:redrawHCS: function(elements) {
然后,您尝试使用
elements
遍历each
:elements.each(function(index, value, border) {
但这将是jQuery的
each
,并将回调函数调用为:function(index, dom_element)
因此
value
将是DOM元素,border
将是undefined
,并且redrawHCS
的第二个参数将被完全忽略。如果
.user-card-avatar-round
应该是值border
的.score
,那么您需要更多类似的内容:redrawHCS: function(values, borders) {
var i, value, border;
for(i = 0; i < values.length; ++i) {
value = values[i];
border = borders[i];
//...
}
}
我很确定有更好的方法来解决此问题,但是我需要知道DOM结构才能给您一个。我猜想它看起来像
redrawHCS(this.$el.find('.score'))
以及border = $(value).closest('.user-card-avatar-round')
函数中的each
,但这很投机。