JavaScript 对象绑定
JavaScript object binding
编辑
修复了下面的代码!再次感谢安迪克!有关原始问题,请参见下文。
.HTML
<!-- feature -->
<div class="feature col-md-8">
<div class="feature-slides">
<div class="feature-slide active" style="background-image: url('/images/1.jpg');"></div>
<div class="feature-slide" style="background-image: url('/images/2.jpg');"></div>
</div>
<ul class="row feature-pagination">
<li data-slide-index="0" class="col-xs-4 col-sm-3 col-md-2">
<button style="background-image: url('/images/1.jpg');"></button>
</li>
<li data-slide-index="1" class="col-xs-4 col-sm-3 col-md-2">
<button style="background-image: url('/images/2.jpg');"></button>
</li>
</ul>
</div>
<!-- feature -->
<div class="feature col-md-8">
<div class="feature-slides">
<div class="feature-slide active" style="background-image: url('/images/1.jpg');"></div>
<div class="feature-slide" style="background-image: url('/images/2.jpg');"></div>
</div>
<ul class="row feature-pagination">
<li data-slide-index="0" class="col-xs-4 col-sm-3 col-md-2">
<button style="background-image: url('/images/1.jpg');"></button>
</li>
<li data-slide-index="1" class="col-xs-4 col-sm-3 col-md-2">
<button style="background-image: url('/images/2.jpg');"></button>
</li>
</ul>
</div>
JavaScript
<script>
// feature class + constructor
var Feature = function(element) {
//THIS WAS THE PROBLEM, NEEDED A VAR
var _this = this;
//collect elements as jqueries
_this.element = $(element);
_this.slides = $(_this.element).find('.feature-slide');
_this.pagination = $(_this.element).find('.feature-pagination > li');
//setup onclicks for pagination
$(_this.pagination).click(function() {
_slide = this;
var slideIndexToDisplay = $(_slide).attr("data-slide-index");
$(_this.slides).removeClass('active');
$(_this.slides).eq(slideIndexToDisplay).addClass('active');
});
};
$(document).ready(function() {
// init feature widget
var features = $('.feature');
$.each(features, function(){
_this = this;
_feature = new Feature(_this);
});
});
</script>
原始问题
这是相当愚蠢的,因为我觉得我以前已经做过一百万次了,但我不确定我在这里做错了什么。我希望每个特征只影响自身,但第二个特征对象在第一个而不是第二个特征对象上更改幻灯片,所以我的对象相互渗透。
.HTML
<!-- feature -->
<div class="feature col-md-8">
<div class="feature-slides">
<div class="feature-slide active" style="background-image: url('/images/1.jpg');"></div>
<div class="feature-slide" style="background-image: url('/images/2.jpg');"></div>
</div>
<ul class="row feature-pagination">
<li data-slide-index="0" class="col-xs-4 col-sm-3 col-md-2">
<button style="background-image: url('/images/1.jpg');"></button>
</li>
<li data-slide-index="1" class="col-xs-4 col-sm-3 col-md-2">
<button style="background-image: url('/images/2.jpg');"></button>
</li>
</ul>
</div>
<!-- feature -->
<div class="feature col-md-8">
<div class="feature-slides">
<div class="feature-slide active" style="background-image: url('/images/1.jpg');"></div>
<div class="feature-slide" style="background-image: url('/images/2.jpg');"></div>
</div>
<ul class="row feature-pagination">
<li data-slide-index="0" class="col-xs-4 col-sm-3 col-md-2">
<button style="background-image: url('/images/1.jpg');"></button>
</li>
<li data-slide-index="1" class="col-xs-4 col-sm-3 col-md-2">
<button style="background-image: url('/images/2.jpg');"></button>
</li>
</ul>
</div>
JavaScript
$(document).ready(function() {
// init feature widget
$('.feature').each(function(){
_this = this;
feature = new Feature(_this);
// feature.init();
});
});
// feature class + constructor
var Feature = function (element) {
//save this!
_this = this;
//collect elements as jqueries
_this.element = $(element);
_this.slides = $(_this.element).find('.feature-slide');
_this.pagination = $(_this.element).find('.feature-pagination > li');
//setup onclicks for pagination
$(_this.pagination).click(function() {
_slide = this;
slideIndexToDisplay = $(_slide).attr("data-slide-index");
$(_this.slides).removeClass('active');
$(_this.slides).eq(slideIndexToDisplay).addClass('active');
});
};
如果没有渲染的示例很难说,但看起来您需要初始化_this
:
var _this = this;
由于您没有var
,因此_this
在全局范围内定义,并在每次调用.each
回调和调用Feature
时被覆盖。
相关文章:
- 如果数据绑定对象只有它的名称,那么敲除如何知道它
- 如何使用普通js绑定对象以更新值
- Knockoutjs 绑定对象问题
- 如何将 require('') 对象传递到绑定对象的作用域中
- 如果 ajax 刷新了绑定对象,则 .submit 不起作用
- 角度无意绑定/对象镜像
- 在 JavaScript 中传递绑定对象方法
- 循环绑定对象
- 我应该如何在ng重复中绑定对象的值
- Knockout js:用于绑定对象而不是单个值的代码
- Paper.js Z索引和绑定对象
- AngularJS-绑定对象列表
- 如何在指令的link函数中对绑定对象做出反应
- 事件创建中的Javascript绑定对象
- 删除元素时是否需要清除绑定对象?
- 为绑定对象添加属性
- javascript绑定对象's原型函数
- AngularJS用复选框绑定对象
- 有没有可能保护'this'引用绑定对象内的函数
- Angular绑定对象元素到HTML