JQuery/骨干删除在茉莉花中不起作用
JQuery/Backbone remove not working in Jasmine
我正在Jasmine中测试Backbone View。当我调用视图的 remove
方法时,该元素实际上并未被删除。
我的视图中有这个事件处理程序:
onModelChange: function() {
this.$el.html('');
this.render();
}
我必须以这种方式编写它,因为手动设置 html 是删除它的唯一方法。调用 remove 不会执行任何操作,当视图再次呈现自身时,它只会呈现追加到旧内容的新内容。我什至尝试从 Chromium 中的开发人员工具中调用 remove 但这也不起作用。但是,当我在浏览器中手动测试它时,删除确实有效,但它在 Jasmine 中不起作用,它搞砸了我的测试。
我认为问题的答案在于jQuery源代码:
remove: function( selector, keepData /* Internal Use Only */ ) {
var elem,
elems = selector ? jQuery.filter( selector, this ) : this,
i = 0;
for ( ; (elem = elems[i]) != null; i++ ) {
if ( !keepData && elem.nodeType === 1 ) {
jQuery.cleanData( getAll( elem ) );
}
if ( elem.parentNode ) {
if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) {
setGlobalEval( getAll( elem, "script" ) );
}
elem.parentNode.removeChild( elem ); // right here to be specific
}
}
return this;
},
remove 函数依赖于节点的父节点来执行删除。我猜当测试在业力中运行时,主干视图的节点没有父节点。为了进一步探索,我调试了测试。在控制台中,如果我查询视图元素的子元素并将其删除,它将起作用。
相关文章:
- electronic BrowserWindow的最小高度和宽度在hide()show()方法之后不起作用
- 监视函数从服务返回不起作用,但作用域函数起作用
- 幻灯片滚动javascript不起作用
- 简单的javascript在Shopify中不起作用
- Recaptcha在IE7和IE8中不起作用
- Ember Data DS.Model's set函数不起作用
- JsFiddle上的鼠标事件不起作用
- 我的AngularJS表达式没有'不起作用
- 点击按钮输入不起作用
- 面向对象的Javascript代码在IE7中不起作用
- 分部隐藏在jquery中不起作用
- 在phonegap应用程序内部重定向不起作用
- Array.length似乎不起作用;console.log则显示其他情况
- $ionicplatform内的$scope不;不起作用
- 我的javascript for循环不起作用
- Meteor-添加用户自定义字段的方法不起作用
- JQuery/骨干删除在茉莉花中不起作用
- 茉莉花与业力:阿贾克斯不起作用
- 使用间谍进行茉莉花测试,$httpBackend不起作用
- 茉莉花+伊斯坦布尔覆盖范围不起作用