0

各位早上好。

首先,对不起我的英语。这是我遇到的问题。我尝试在 div 中为 ul 列表设置动画。但是在ajax调用之后它停止工作。我尝试使用.live()它已经被弃用的方法。我真的不知道如何解决这个问题。这是我正在使用的代码:

function comp_disposicion_contenidos (disposicion, area, seccion) {

var newDisposicion = eval(disposicion),
    newArea = area,
    newSeccion = seccion,
    allDispContent;

var appendDisp = function() {

    jQuery('.seccion').append("<div id='comp_disposicion_contenidos_vacio'></div>");

    var html = '<ul>';
    jQuery.each(newDisposicion, function(k,v){
        html += '<li class="" title="'+v+'">'+v+'%</li>';
    });
    html += '</ul>';

    jQuery('.jumichica_agregado').each(function() {

        jQuery(this).append("<div class='tabMenu'>"+html+"</div>");

    });
}

this.set_DispContentExists = function(allDispContent_) {
    //alert(allDispContent_);
    allDispContent = (allDispContent_);
    //alert(allDispContent);
}

var asignarTamano = function () {

}

this.setDispContent = function(id_agregado, valor){
    //this is the ajax call
    (new paginax()).cargar("libs/ejecutor.php",
        "comp_disposicion_contenidos_vacio", 
        "objeto=Comp_Disposicion_Contenidos&parametros=" +
        "&metodo=set_DispContent&parametros_metodo=" + id_agregado + ',' + valor +
        "&area=" + newArea +"&seccion=" + newSeccion, "POST");
}

appendDisp();
}


jQuery(document).ready(function() {

/*jQuery('.jumichica_agregado').hover(function() {
    console.log('entro');
        jQuery(this).addClass('jumichica_agregado_hover');
        jQuery(this).find("div.tabMenu").stop().animate({opacity: "show", top: "-35"}, "slow");
    }, function() {
    console.log('salio');
        jQuery(this).removeClass('jumichica_agregado_hover');
        jQuery(this).find("div.tabMenu").stop().animate({opacity: "hide", top: "-15"}, "fast")
    }
);*/

jQuery('.jumichica_agregado').on({
    mouseenter: function(e) {
        e.preventDefault();
        console.log('entro');
        jQuery(this).addClass('jumichica_agregado_hover');
        jQuery(this).find("div.tabMenu").stop().animate({opacity: "show", top: "-35"}, "slow");
    },
    mouseleave: function() {
        console.log('salio');
        jQuery(this).removeClass('jumichica_agregado_hover');
        jQuery(this).find("div.tabMenu").stop().animate({opacity: "hide", top: "-15"}, "fast")
    }
});


jQuery('.tabMenu').tabs();

jQuery('.tabMenu ul li').click(function() {
    var parentWidth = jQuery(this).closest('.seccion').width();
    var width_ = jQuery(this).attr("title");
    var percent = parseInt(width_*parentWidth/100);

    var agregado = jQuery(this).closest('.jumichica_agregado');
    agregado.width(percent +'px');

    var id = agregado.attr('id');
    id = id.split('_').pop();

    //manejador_js_comp_disposicion_contenidos. this variable has been declared in another html
    manejador_js_comp_disposicion_contenidos.setDispContent(id, percent);
})

});

我感谢您的所有帮助。顺便说一句,非常感谢。

4

2 回答 2

0

我认为你只需要回调绑定:

function bindEvents(within) {
    jQuery('.jumichica_agregado', within).on({
        mouseenter: function(e) {
            e.preventDefault();
            console.log('entro');
            jQuery(this).addClass('jumichica_agregado_hover');
            jQuery(this).find("div.tabMenu").stop().animate({opacity: "show", top: "-35"}, "slow");
        },
        mouseleave: function() {
            console.log('salio');
            jQuery(this).removeClass('jumichica_agregado_hover');
            jQuery(this).find("div.tabMenu").stop().animate({opacity: "hide", top: "-15"}, "fast")
        }
    });
}
bindEvents($(document)); //bind on load

加载成功后,您可以调用:

bindEvents(newlyCreatedElements); //bind on load

其中变量newCreatedElements 是使用ajax$.load()函数创建的新元素

于 2012-11-30T18:31:51.317 回答
0

您必须在方法中将正在更新的选择器设置为选择器jQuery.fn.on

jQuery('.tabMenu').on({mouseenter: ... , mouseleave: ...}, '.jumichica_agregado');

请参阅参考:带有签名的jQuery.fn.on.on( events-map [, selector] [, data] ):。

于 2012-11-30T15:31:45.277 回答