2014-01-07 12 views
5

に.clickではこのjQueryを使って... ...なぜそれは私がこの<code><a></code>をキャッチすることができないということであるjQueryの

<a href="javascript:void(0)" class="select2-choice select2-default" tabindex="-1"> 
    <span class="select2-chosen">select item</span> 
    <abbr class="select2-search-choice-close"></abbr> 
    <span class="select2-arrow"> 
     <b></b> 
    </span> 
</a> 

をキャッチすることができませんか?

$(document).ready(function() { 
    $(".select2-choice").click(function() { 
    alert("Handler for .keydown() called."); 
    }); 
}); 

私は、これはドロップダウンを生成しています機能だと思う:

 createContainer: function() { 
     var container = $(document.createElement("div")).attr({ 
      "class": "select2-container" 
     }).html([ 
      "<a href='javascript:void(0)' onclick='return false;' class='select2-choice' tabindex='-1'>", 
      " <span class='select2-chosen'>&nbsp;</span><abbr class='select2-search-choice-close'></abbr>", 
      " <span class='select2-arrow'><b></b></span>", 
      "</a>", 
      "<input class='select2-focusser select2-offscreen' type='text'/>", 
      "<div class='select2-drop select2-display-none'>", 
      " <div class='select2-search'>", 
      "  <input type='text' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' class='select2-input'/>", 
      " </div>", 
      " <ul class='select2-results'>", 
      " </ul>", 
      "</div>"].join("")); 
     return container; 
    } 

が実は、私は私の前から、ユーザーがフィールドをクリックしたときにボタンを追加することによって、この問題adding button on a select2を解決しようとしています解決策は機能していません。

私はFirefox 8.0とChromeバージョン31.0.1650.63 mをWindows 8マシン、64ビットで使用しています。

<a href="javascript:void(0)" ... >には何か関係がありますか?お手伝いありがとう。

+0

inline javascriptは悪い決定atmです。 javascript voidは、デフォルトのアクション(return falseやe.preventDefault()など)を行わないようにする必要があります。あなたが見ることができるように、それはもう正しく動作しません(クロムでは、別のイベントハンドラが要素に追加されても何もしません)。 – cocco

+1

jQueryのバージョンが1.7以上であれば、 '.click'の代わりに' .on 'を使用することを検討してください - http://stackoverflow.com/a/11878976/1311025 –

+0

Chromeでうまく動作します。http: //jsfiddle.net/89QZ2/どのブラウザで問題が発生していますか? –

答えて

2

を試してみてください.click()

の代わりに.on("click",".select2-choice")を使用したいと思うでしょう。関数を実行する前にセレクタにフィルタリングされた文書にクリックイベントを追加

$(document).ready(function() { 
    $(document).on("click", ".select2-choice", function() { ... }); 
}); 

を試してみてください。

+0

HI @Hafthor答えてくれてありがとうしかし、そのまだ動作していない、私はクラス=「数量」をテキストボックスに、たとえば別の要素にバインドしようと、それは多分Imは本当にクラス= "select2-を持つ要素をクリックすることではない、働いていました選択肢」しかし、そのブロック上の唯一の T_T – melvnberd

3

javascript:void(0)hrefに入力すると、特定のブラウザでは、$(".select2-choice").click()に関連付けられているコードが上書きされます。この問題を解決するには

、あなたが<a href="#" class="select2-choice select2-default" tabindex="-1">

This JSFiddleにそれを変更することができ、実際にマックOSX上のChromeの最新バージョンとの両方で動作しますが、私はそれがあなたのためにIE

の一部のバージョンのために中断すると思います編集、私は、問題は、イベントハンドラを作るときに、一致するメソッドがないことだと思います。あなたは$(「.select2-選択は」)ので、何のイベントがバインドされなかった、実行時に何も一致しなかったため、この

$(document).on("ready",".select2-choice",function() { 
    $(".select2-choice").click(function() { 
    alert("Handler for .keydown() called."); 
    }); 
}); 
+0

あなたの有益な答えのための@ scrblnrd3ありがとう:)しかし、私はアンカーをクリックするたびに私の警告ボックスの表示を行うことができます、実際にはリンクは、実行時にもjavascriptによって生成された、これはその動作に影響を与えますか?私はあなたのコードが正しいことを知っているが、私のコードdoesntは動作するようです:/ – melvnberd

+0

@melvnberd href属性から "javascript:void(0)"コードを削除しましたか? –

+0

@WilsonFreitasはい私は「javascript:void(0)」を削除し、それをscrblnrd3として#に置き換えました – melvnberd

関連する問題

 関連する問題