1

ドロップダウンで要素をテキスト検索するjScript関数があります。ie7までは問題なく動作していました。クロスブラウザーで機能する回避策がありますが、正規表現の代わりに jQuery オプションを使用して ie7 で遅くなります。

関数:

/// For the dropdown element passed, find the index where the Text  matches the passes string
/// and select this option. Returns true if found otherwise false

function selectTextinDropdown(el, sometext) {

    // Use REgex instead of option:contains as it it much faster!
   $(el).find("option:[text^='" + sometext.trim() + "']").each(function () {

   // works ok but SLOW in IE 7!!
   // $(el).find("option:contains('" + sometext.trim() + "')").each(function () {

      //alert("found|" + this.text + "|" + sometext);

        $(this).attr("selected", "selected");
        if ($(this).text() == sometext) {            
            $(this).attr("selected", "selected");
            return true; //found and selected!
        }
        return false; //Not found and Not  selected!
    });    

}

より良い回避策を知っている人はいますか? 読んでくれてありがとう!

4

1 に答える 1

0

これを試して:

function selectTextinDropdown(selectEle, targetText) {
  if(targetText==null){
    return false;
  }
  targetText = targetText.trim();

  // Find all options that meet your condition
  var $matches = $(selectEle).find('option').filter(function(index){
    // only use jquery selector once
    var $this = $(this);

    // extract text from the option
    var text= $this.text();

    // determine if it's found
    // OPTION A: exact match
    var found = (text === targetText);
    // OPTION B: partial match
    // var found = (text.indexOf(targetText) >= 0);

    if(found){ // select item if found
      $this.attr("selected", "selected");
    }
    return found;
  });

  return ($matches!=null && $matches.length>0);
}
于 2013-11-21T01:01:37.183 に答える