Skip to Menu

wrap removes expandos

#foo is wrapped with a div. When you click on it, a border should be added (this only works in IE 6 / 7 when using jQuery < 1.2) and an alert containing "Some text" should appear. This demo uses expandos, which appear to be removed when wrap is used.

jQuery 1.1.2 (works) | jQuery 1.2.1 (doesn't work) | jQuery 1.2.2 (doesn't work)

#foo #bar
<script type="text/javascript">
$(document).ready(
	function()
	{
		// #foo example (expandos)
		var wrapper = document.createElement("div");
		wrapper.sometext = "Some text";
		wrapper.clickcss = {border: "2px solid #eee", padding: "6px"};
		$("#foo").wrap(wrapper).click(
			function(e)
			{
				e.preventDefault();
				alert(this.parentNode.sometext);
				$(this.parentNode).css(this.parentNode.clickcss);
			}
		);
		
		// #bar example (no expandos)
		var wrapper2 = document.createElement("div");
		var sometext = "Some text";
		var clickcss = {border: "2px solid #eee", padding: "6px"};
		$("#bar").wrap(wrapper2).click(
			function(e)
			{
				e.preventDefault();
				alert(sometext);
				$(this.parentNode).css(clickcss);
			}
		);
	}
);
</script>