jQuery 用の Chosen プラグイン (ここにあります: http://harvesthq.github.com/chosen/ ) は、HTML 要素を選択するための機能を追加します。次のコードを使用して、ページに読み込まれた初期要素に機能を追加できます。
$(document).ready(function(){
$(".chosenProperties").data("placeholder","Select properties...").chosen();
$(".chosenType").data("placeholder","Type...").chosen();
$(".chosenInstance").data("placeholder","Instance...").chosen()
それはうまくいきます。select 要素のこれら 3 つのクラスはすべて、#newGroup という div に表示されます。ページには新しいグループを「追加」するボタンがあり、#newGroup div を複製して最初の div のすぐ下に追加します。
同じ要素が含まれています。ただし、複製された div の選択項目に Chosen 機能を追加しようとすると、それらはフリーズします。インターフェイスは最初のものと同じように見えるので、Chosen がロードされていますが、クリックしても何も起こりません。コードは次のとおりです。
$( '#swl-add-group-button' ).click( function() {
//addGroupToGUI();
createClassAddRow();
} );
var rowNum = 0;
function createClassAddRow() {
rowNum++;
newRow = jQuery('#newGroup').clone().css('display', '');
newHTML = newRow.html().replace(/0/g, 1);
newRow.initializeJSElements();
newRow.html(newHTML);
newRow.initializeJSElements();
jQuery('#mainTable').append(newRow);
addGroup(newRow);
}
jQuery.fn.initializeJSElements = function (){
this.find(".chosenProperties").each( function() {
alert('test');
if($(".chosenProperties").data("placeholder", "Select properties...").chosen()){
alert('test2');
}
});
this.find(".chosenType").each( function() {
jQuery(this).data("placeholder","Type...").chosen();
});
this.find(".chosenInstance").each( function(){
jQuery(this).data("placeholder", "Instance...").chosen();
})
}
test と test2 の両方のアラートが表示されます。jQueryがロードされていると思いますが、何らかの理由で機能していません。また、これが違いを生むかどうかはわかりませんが、複製された div の選択要素にカーソルを合わせると javascript:void(1) と表示されますが、元の要素にカーソルを合わせると javascript:void(0) と表示されます。