选用的jQuery插件(可以在这里找到:http://harvesthq.github.com/chosen/)为select HTML元素增加了额外的功能。我可以通过以下代码将该功能添加到页面上加载的初始元素中:
$(document).ready(function(){
$(".chosenProperties").data("placeholder","Select properties...").chosen();
$(".chosenType").data("placeholder","Type...").chosen();
$(".chosenInstance").data("placeholder","Instance...").chosen()
可以。这三个类别的选择元素都出现在一个名为 #newGroup 的 div 中。页面上有一个按钮“添加”新组,它克隆 #newGroup div 并将其添加到第一个下方。
它包含相同的元素。但是,当我尝试将 Chosen 功能添加到克隆的 div 中的选择项时,它们被冻结了。界面与第一个界面相同,因此 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)。