diff --git a/lib/assets/javascripts/backbone-support/composite_view.js b/lib/assets/javascripts/backbone-support/composite_view.js index 3b3d38a..055953a 100644 --- a/lib/assets/javascripts/backbone-support/composite_view.js +++ b/lib/assets/javascripts/backbone-support/composite_view.js @@ -41,7 +41,7 @@ _.extend(Support.CompositeView.prototype, Backbone.View.prototype, Support.Obser prependChildTo: function (view, container) { this.renderChild(view); - $(container).prepend(view.el); + this.$(container).prepend(view.el); }, _leaveChildren: function() { diff --git a/spec/javascripts/composite_view_spec.js b/spec/javascripts/composite_view_spec.js index a2d0398..39e8ddf 100644 --- a/spec/javascripts/composite_view_spec.js +++ b/spec/javascripts/composite_view_spec.js @@ -91,6 +91,15 @@ describe("Support.CompositeView", function() { expect($(view.el).find('.inside').text()).toEqual("Append to this!Orange!"); }); + + it("appends the element only to elements inside the view", function(){ + var view = new blankView({el: $('
Append to this!
')}); + var div = $("
"); + view.appendChildTo(new orangeView(), ".main"); + + expect($(view.el).find('.main').text()).toEqual("Append to this!Orange!"); + expect($("#outside").text()).toEqual(""); + }); }); describe("#prependChild", function() { @@ -108,11 +117,29 @@ describe("Support.CompositeView", function() { $("#test1").text("Prepend to this!"); var view = new blankView({el: "#test"}); + expect($("#test").text()).toEqual(""); + + $("#test").append($("#test1")); view.prependChildTo(new orangeView(), "#test1"); - expect($("#test").text()).toEqual(""); expect($("#test1").text()).toEqual("Orange!Prepend to this!"); }); + + it("prepends child into a sub-element even if it is not added to the document", function() { + var view = new blankView({el: $('
Prepend to this!
')}); + view.prependChildTo(new orangeView(), ".inside"); + + expect($(view.el).find('.inside').text()).toEqual("Orange!Prepend to this!"); + }); + + it("prepends the element only to elements inside the view", function(){ + var view = new blankView({el: $('
Prepend to this!
')}); + var div = $("
"); + view.prependChildTo(new orangeView(), ".main"); + + expect($(view.el).find('.main').text()).toEqual("Orange!Prepend to this!"); + expect($("#outside").text()).toEqual(""); + }); }); describe("#leave", function() {