title: Set attribute disabled to options NOT containing a certain string
body: <p>I know this should be easier if I could only use optgroups. But I am trying to avoid hacking core of my CMS, so jQuery should come to rescue again, hopefully.</p>
  
  <p>I have a select with options in a hierarchy sometimes, and I want to put attributes disabled to any of options containing text NOT starting with a dash. 
  I want to code like:</p>
  
  <p><strong>Set disabled attributes to selectors with options text NOT starting with a dash ("-").</strong></p>
  
  <pre><code>&lt;select id="options"&gt;
  &lt;option value="" selected="selected"&gt;- Please choose -&lt;/option&gt;
  &lt;option value="1"&gt;Parent1&lt;/option&gt;
  &lt;option value="2"&gt;-child1&lt;/option&gt;
  &lt;option value="3"&gt;-child2&lt;/option&gt;
  &lt;option value="4"&gt;-child3&lt;/option&gt;
  &lt;option value="5"&gt;-child4&lt;/option&gt;
  &lt;option value="6"&gt;Parent2&lt;/option&gt;
  &lt;option value="7"&gt;-child5&lt;/option&gt;
  &lt;option value="8"&gt;-child6&lt;/option&gt;
  &lt;option value="9"&gt;-child7&lt;/option&gt;
  &lt;option value="10"&gt;-child8&lt;/option&gt;
  &lt;/select&gt;
  </code></pre>
  
  <p>The closest solution is here <strong><a href="https://stackoverflow.com/questions/2012299/contain-start-by">:contain / start by</a></strong>, </p>
  
  <pre><code>$.extend($.expr[':'], {
      startsWith: function(elem,match) {  
          return (elem.textContent || elem.innerText || "").indexOf(match[3]) == 0;
      }  
  });
  </code></pre>
  
  <p>But I can't seem to do it right this far.</p>
  
  <p>Any help would be very much appreciated. Thank you very much.</p>