title: jQuery v1.10+ val() creates empty option if none exists
body: <p>Recently updated to jQuery v1.12 and found that it sets <code>&lt;select&gt;</code> elements to a nonexistant option if one doesn't exist, instead of gracefully falling back to unsetting the value as it did previously.  </p>
  
  <p>Here is the behavior I'm used to (pre v1.10):</p>
  
  <p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
  <div class="snippet-code">
  <pre class="snippet-code-js lang-js prettyprint-override"><code>$("button").click(function() {
    $("select").val('');
  });</code></pre>
  <pre class="snippet-code-html lang-html prettyprint-override"><code>&lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"&gt;&lt;/script&gt;
  &lt;select&gt;
    &lt;option value="1"&gt;something 1&lt;/option&gt;
    &lt;option value="2" selected="selected"&gt;something 2&lt;/option&gt;
  &lt;/select&gt;
  &lt;button&gt;reset&lt;/button&gt;</code></pre>
  </div>
  </div>
  </p>
  
  <p>And here is how v1.10+ behaves:</p>
  
  <p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
  <div class="snippet-code">
  <pre class="snippet-code-js lang-js prettyprint-override"><code>$("button").click(function() {
    $("select").val('');
  });</code></pre>
  <pre class="snippet-code-html lang-html prettyprint-override"><code>&lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"&gt;&lt;/script&gt;
  &lt;select&gt;
    &lt;option value="1"&gt;something 1&lt;/option&gt;
    &lt;option value="2" selected="selected"&gt;something 2&lt;/option&gt;
  &lt;/select&gt;
  &lt;button&gt;reset&lt;/button&gt;</code></pre>
  </div>
  </div>
  </p>
  
  <p><strong>Is this a bug or is this the intended behavior?</strong></p>
  
  <p>I read through the <a href="https://blog.jquery.com/2013/05/24/jquery-1-10-0-and-2-0-1-released/"><strong>changelog</strong></a> and don't see any specific mention of this change but finding it rather disruptive.</p>
  
  <p><em>(Please note: I am <strong>not</strong> looking for workarounds and as noted in the comments, I've already changed my app to use <code>$('select').prop("selectedIndex", 0).change();</code>)</em></p>