Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Clone isn't cloning select values

Tags:

jquery

I didn't expect it but the following test fails on the cloned value check:

test("clone should retain values of select", function() {     var select = $("<select>").append($("<option>")                               .val("1"))                               .append($("<option>")                               .val("2"));     $(select).val("2");     equals($(select).find("option:selected").val(), "2", "expect 2");     var clone = $(select).clone();     equals($(clone).find("option:selected").val(), "2", "expect 2"); }); 

Is this right?

like image 536
chief7 Avatar asked Apr 13 '09 01:04

chief7


1 Answers

After further research I found this ticket in the JQuery bug tracker system which explains the bug and provides a work around. Apparently, it is too expensive to clone the select values so they won't fix it.

https://bugs.jquery.com/ticket/1294

My use of the clone method was in a generic method where anything might be cloned so I'm not sure when or if there will be a select to set the value on. So I added the following:

var selects = $(cloneSourceId).find("select"); $(selects).each(function(i) {     var select = this;     $(clone).find("select").eq(i).val($(select).val()); }); 
like image 183
chief7 Avatar answered Oct 02 '22 16:10

chief7