darkK
darkK

Reputation: 101

'Close' button does not work in javascript

In the mobile version on my form appears 'Close' button. Unfortunately, it does not work. I see a normal button, but when I click there is no reaction. In the javascript I load the file form-with-button.html to render form content in my all .html files.

<div id="form-with-button">
</div>

and use javascript to show and close.

//Onload show header and footer content
 $("#header").load('header.html', function(){
    $('#nav').affix({
            offset: {top: $('#header').height()-$('#nav').height()}
    });
    });
$("#footer").load('footer.html');

$("#contact").load('footer-contact.html');  
$("#form-with-button").load('form-with-button.html');

// Sticky Buttons Show Hide 
$("#fix-quote, #fix-contact").on("click", function() {
    var body = $("body");
    var openPos= ["",""];
    var id = $(this).attr("id");
    var content = $("#"+id+"-content");
    var property = (content.attr("class").toString().indexOf("left") > -1)? "left": "right";
    if (!body.hasClass("bd_"+id)) {
        openPos= [0,380]
        var ele = $(this);
        body.addClass("bd_"+id)
        setTimeout(function(){
            body.on("click.fix",function(ev) {
                if($(ev.target).closest(".fixed-container").length == 0){
                    $(ele).click()
                }
            });
        },10);
    } else {
        body.removeClass("bd_"+id).off("click.fix");
    }

    content.css("top","").show().css(property, openPos[0]);
    $(this).css(property, openPos[1]);

});
// Mobile Requests Showhide 
$("#fix-quote-mob, #fix-contact-mob").on("click", function() {
    var id = $(this).attr("id").slice(0,-4);
    var content = $("#"+id+"-content");
    content.show()
    setTimeout(function(){
       content.css("top",0) 
    },10)
});
$(".fix-contact-close").on("click", function() {
    var content = $(this).closest(".fixed-container");
    content.css("top","").delay(400).hide(0);

});

Please help, why my button does not work?

Upvotes: 0

Views: 93

Answers (1)

Hackerman
Hackerman

Reputation: 12305

You are trying to add a handler to an element created in a dynamic way, so you need to refactor your code in order to make it work:

 $(document).on("click", ".fix-contact-close", function() {
     var content = $(this).closest(".fixed-container");
     content.css("top","").delay(400).hide(0);
 });

Upvotes: 1

Related Questions