2010-12-14 9 views
0

jquery uiオートコンプリートバージョン1.8.5をjqueryモバイルアルファ2で使用します。 オートコンプリートリストから項目をクリックするとエラーが発生します:

$this.attr("href") is undefined.

誰でも修正を知っていますか?

EDITED:

<html> 
    <head> 
     <link rel="stylesheet" type="text/css" href="css/ui-lightness/jquery-ui-1.8.custom.css"> 
     <link rel="stylesheet" type="text/css" href="css/autocomplete.css"> 
    </head> 
    <body> 

     <div id="formWrap"> 
      <form id="messageForm" action="#"> 
       <fieldset> 
        <label id="toLabel">select:</label> 
        <div id="friends" class="ui-helper-clearfix"> 

         <input id="to" type="text"> 
        </div> 

       </fieldset> 
      </form> 
     </div> 
     <script type="text/javascript" src="js/jquery-1.4.2.min.js"></script> 
     <script type="text/javascript" src="js/jquery.mobile-1.0a2.js"></script> 
     <script type="text/javascript" src="js/jquery-ui-1.8.custom.min.js"></script> 


     <script type="text/javascript"> 
      $(function(){ 

       var availableTags = [ 
         "ActionScript", 
         "AppleScript", 
         "Asp", 
         "BASIC", 
         "C", 
         "C++", 
         "Clojure", 
         "COBOL", 
         "ColdFusion", 
         "Erlang", 
         "Fortran", 
         "Groovy", 
         "Haskell", 
         "Java", 
         "JavaScript", 
         "Lisp", 
         "Perl", 
         "PHP", 
         "Python", 
         "Ruby", 
         "Scala", 
         "Scheme" 
        ]; 


       //attach autocomplete 
       $("#to").autocomplete({    

        source:availableTags 
        , 

        //define select handler 
        select: function(e, ui) { 
         var contact = ui.item.value; 
         createSpan(contact); 
         $("#to").val("").css("top", 2); 
         return false; 
        }   
       }); 

       }); 

      function createSpan(contact){ 
       //create formatted friend    
       span = $("<span>").text(contact)    
       //add contact to contact div 
       span.insertBefore("#to"); 
      } 
     </script> 

    </body> 
</html> 
+0

私が局部的に取り組んでmは以来 – naugtur

+0

URLを送信することはできません参考になるハプニング表示するページへのリンク:これは未定義のhrefエラーを回避する必要があります。コードは長いです。 例には、jquery.mobile-1.0a2.jsを含む単純なjqueryオートコンプリートを使用できます。 –

+0

上記のサンプルコードを追加しました。 –

答えて

1

修正jquery.mobile-1.0a2.jsは:hrefのは、これが問題を修正したコード

$("a").live("click", function(event) { 
      //(START: My added code) 
      if($(this).attr("href")==undefined){ 
       //for links created for interaction - ignore 
       return false; 
      } 
      //(END: My added code) 
    //Remaining code follows 

内 を定義されていないかどうかを確認するためのチェックを追加しました。

0

$(this)ない$this

+0

jquery.mobile-1.0a2.jsでは、var $ this = $(これ)です。 –

1

ちょっとしたお菓子、私を正しい方向に向けると感謝しています。

jqueryモバイルソースコードを直接変更するのではなく、jquery UIコードをオーバーライドする方がよいことがわかります(保守性のため)。次の例は、オートコンプリートリストの各項目をレンダリングするjquery-uiメソッドをオーバーライドしています。作成されるアンカー要素に '#'の値を持つhref属性を追加します。

$('#to').data("autocomplete")._renderItem = function(ul, item) { 
return $("<li></li>") 
    .data("item.autocomplete", item) 
    .append($("<a></a>").attr({href: '#'}).html(item.label)) 
    .appendTo(ul); 

}

関連する問題