我正在附加一个 ul
列表,它工作得很好,除了当我尝试附加我的 ul
表时,我分配了一个 start-dropdownClose
类> 挂接到事件监听器:
$(".start-dropdownClose").click(function(event){
event.stopPropagation();
$thisOne = $($(this).parent().attr('id'));
alert($thisOne.selector);
$("#" + $thisOne.selector).fadeOut();
});
这是我的附加方法:
IfpClientGui.prototype.updateFloors = function(floors){
// updates floor list from master list of floors.
var ifpcg = this;
var ifpc = ifpcg.getIfpClient();
$("#floor_list").empty();
$("#floor_list").append("<li class='start-dropdownClose'><a href='' onclick='return false;'>X</a></li>");
for(var i = 0; i < floors.length; i++)
{
$link = $('<a href="javascript:void(0);">'+floors[i].ifpf_name+'</a>');
$link.data("floor",floors[i]);
$link.click(function(){
ifpcg.hideAllOptionBoxes();
ifpc.displayFloor($(this).data("floor"));
$(this).parent().find("#ifpOptionList").show();
});
var $floor = $('<li></li>');
$floor.append($link);
ifpcg.updateOptions(floors[i].groups,$floor);
$("#floor_list").append($floor);
}
}
对于为什么会发生这种情况有什么想法或建议吗?
事件监听位于 ifpClientGui
的 init
类中。我什至尝试将监听的事件移至 $(document).read...
但没有成功。
最佳答案
$(".start-dropdownClose")
仅适用于执行此代码时存在的具有该类的元素。当您稍后添加具有此类的元素时,它们将不会绑定(bind)到事件处理程序。
试试这个:
$('#floor_list').on("click", ".start-dropdownClose"), function(event){
// Your code ...
});
这意味着监听器位于#floor_list
(我假设它始终存在)。发生在元素上的任何点击都将被注册,如果发生在特定类上,则会触发该函数。
关于javascript - 附加 ul - JQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23332545/