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: $('
')});
+ 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: $('')});
+ 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: $('')});
+ 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() {