2017-04-07 6 views
0

オートコンプリートを実行します。ドロップダウンのプロンプトでリンクを作成する必要があります。リンクの `onclick`イベントにどのようにアタッチするのですか? (オートコンプリート)

私はこのpluginを使用しています。

$(function() { 
    $('input[name="oem"]').autoComplete({ 
     minChars: 4, 
     source: function (term, response) { 
      term = term.toLowerCase(); 
      $.getJSON('/search.json?oem=' + term, function (data) { 
       var matches = []; 
       for (i = 0; i < data.length; i++) 
        if (~data[i].toLowerCase().indexOf(term)) 
         matches.push(data[i]); 
       response(matches.slice(0, 11)); 
      }); 
     }, 
     renderItem: function (item, search) { 
      search = search.replace(/[-\/\\^$*+?.()|[\]{}]/g); 
      var re = new RegExp("(" + search.split(' ').join('|') + ")"); 
      return '<div class="autocomplete-suggestion" data-val="' + item + '"><a href="#" onclick="javascript:document.location.href="#"">' + item.replace(re, "<b>$1</b>") + '</a></div>'; 
     } 
    }); 
}); 

どのようにonclickのイベントにリンクを添付できますか?
他にも変種はありますか?

答えて

0

あなたは、たとえばclass="dynamically-added"ため、renderItem関数内でご動的に生成<a></a>タグにクラスを配置し、このクラスのクリックした項目のために待機している文書にイベントハンドラをアタッチすることができます。このデモチェック:

$(document).ready(function(){ 
 
    
 
    // This is how you can handle click event of dynamically added elements via jQuery 
 
    $(document).on('click', '.dynamically-added', function(){ 
 
    console.log('clicked -> ' + $(this).text()); 
 
    }); 
 
    
 
    var container = $('#container'); 
 
    
 
    for(var i=1; i < 6; i++){ 
 
    container.append('<a href="#" class="dynamically-added">Dynamically added '+i+'</a><br/>'); 
 
    } 
 
    
 
    
 
    
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="container"> 
 
    
 
</div>

EDIT

をだからあなたのコードは次のようになります。

以下
$(document).ready(function() { 

    // This is the event handler code 
    $(document).on('click', '.dynamically-added', function() { 
     console.log('clicked -> ' + $(this).text()); 
    }); 

    $('input[name="oem"]').autoComplete({ 
     minChars: 4, 
     source: function (term, response) { 
      term = term.toLowerCase(); 
      $.getJSON('/search.json?oem=' + term, function (data) { 
       var matches = []; 
       for (i = 0; i < data.length; i++) 
        if (~data[i].toLowerCase().indexOf(term)) 
         matches.push(data[i]); 
       response(matches.slice(0, 11)); 
      }); 
     }, 
     renderItem: function (item, search) { 
      search = search.replace(/[-\/\\^$*+?.()|[\]{}]/g); 
      var re = new RegExp("(" + search.split(' ').join('|') + ")"); 
      // Here check your <a> I added class="dynamically-added" 
      return '<div class="autocomplete-suggestion" data-val="' + item + '"><a href="#" class="dynamically-added">' + item.replace(re, "<b>$1</b>") + '</a></div>'; 
     } 
    }); 

}); 
+0

私は '.dynamically-added'を追加しましたが、メッセージは表示されません。コード – dmitriy

+0

Hello mateを実装するには、**の下にある3行のコードを使用する必要があります。これは、クリックイベントを処理するためにjQuery **を使用して動的に追加された要素のクリックイベントを処理する方法です。 – codtex

+0

これを 'renerItem '?コンソールにメッセージは表示されません。 – dmitriy

0

を、私はあなたが構築している方法を変更しましたあなたのコードに文字列を返します。

return "<div class='autocomplete-suggestion' data-val='" + item + "'><a href='#' onclick='javascript:document.location.href="+\""+"#"+\""+">" + item.replace(re, "<b>$1</b>") + "</a></div>";

+0

と 'javascript:document.location.href'が動作しません – dmitriy

関連する問題