jQuery: .click () и выполнить функцию - PullRequest
0 голосов
/ 08 марта 2012

Несколько часов я пытался создать скрипт, который будет показывать div при настройке window.location.hash.Когда страница готова, скрипт работает, но когда я пытаюсь вызвать его с помощью события jQuery .click (), он не работает.

Код:

var bodyHeight = $('body').height();
$(asd);
function asd() {
locationHash = window.location.hash.replace(/^#!/, '');
if(locationHash != "") {
    $('div#bgLayer').css({
        'height': bodyHeight,
        'display': 'block'
    });
    $('div#feedBack').css('display', 'block');
    $('div#bgLayer, div#feedBackRight').click(function() {
        var clientName = "";
        var clientEmail = "";
        var clientWebsite = "";
        var clientImage = "";
        var clientFeedBack = "";
        $('div#bgLayer').css('display', 'none');
        $('div#feedBack').css('display', 'none');
        $('div#feedBacks').css('display', 'block');
        $('div#feedBackForm').css('display', 'none');
        $('a#showFeedBacks').css('font-weight', 'bold');
        $('h3#clientsAboutUs').css('display', 'inline-block');
        $('h3#addFeedBackAboutUs').css('display', 'none');
        $('div.pages').css('display', 'block');
        $('a#addFeedBack').css('font-weight', 'normal');
        window.location.hash = '!';
    });
    if(locationHash == 'addFeedBack') {
        $('div#feedBacks').css('display', 'none');
        $('h3#clientsAboutUs').css('display', 'none');
        $('h3#addFeedBackAboutUs').css('display', 'inline-block');
        $('div.pages').css('display', 'none');
        $('div#feedBackForm').css('display', 'block');
        $('a#showFeedBacks').css('font-weight', 'normal');
        $('a#addFeedBack').css('font-weight', 'bold');
        $('input#submitFeedBack').attr('disabled', 'disabled');
    }
    else if(locationHash == 'showFeedBacks') {
        $('div#feedBackForm').css('display', 'none');
        $('h3#clientsAboutUs').css('display', 'inline-block');
        $('h3#addFeedBackAboutUs').css('display', 'none');
        $('div.pages').css('display', 'block');
        $('div#feedBacks').css('display', 'block');
        $('a#addFeedBack').css('font-weight', 'normal');
        $('a#showFeedBacks').css('font-weight', 'bold');
    }
}
}
$('#addFeedBack-page').click(asd);

# addFeedBack-page:

<a href="#!addFeedBack" id="addFeedBack-page" class="buttons" title="Click me">Click me</a>

Так как все сделать правильно?

С уважением, Джордж!

Ответы [ 3 ]

1 голос
/ 08 марта 2012

Вы хотите связать обработчик кликов внутри события document.ready.

Поэтому измените свой код на:

var bodyHeight = $('body').height();
$(function () {
     asd();
     $('#addFeedBack-page').click(asd);
});

function asd() {
    // same as you have it...
}
0 голосов
/ 08 марта 2012

если вы измените HTML-код вашей текущей страницы с помощью jquery,

обычно я бы предложил вам использовать

jQuery(document).ready(function () {
   $('#addFeedBack-page').live("click",function(){

   //action goes here

   });
});
0 голосов
/ 08 марта 2012
var bodyHeight = $('body').height();
$(document).ready(function () {
     asd();
     $('#addFeedBack-page').click(function(){

        asd();

     });
});

function asd() {
locationHash = window.location.hash.replace(/^#!/, '');
if(locationHash != "") {
    $('div#bgLayer').css({
        'height': bodyHeight,
        'display': 'block'
    });
    $('div#feedBack').css('display', 'block');
    $('div#bgLayer, div#feedBackRight').click(function() {
        var clientName = "";
        var clientEmail = "";
        var clientWebsite = "";
        var clientImage = "";
        var clientFeedBack = "";
        $('div#bgLayer').css('display', 'none');
        $('div#feedBack').css('display', 'none');
        $('div#feedBacks').css('display', 'block');
        $('div#feedBackForm').css('display', 'none');
        $('a#showFeedBacks').css('font-weight', 'bold');
        $('h3#clientsAboutUs').css('display', 'inline-block');
        $('h3#addFeedBackAboutUs').css('display', 'none');
        $('div.pages').css('display', 'block');
        $('a#addFeedBack').css('font-weight', 'normal');
        window.location.hash = '!';
    });
    if(locationHash == 'addFeedBack') {
        $('div#feedBacks').css('display', 'none');
        $('h3#clientsAboutUs').css('display', 'none');
        $('h3#addFeedBackAboutUs').css('display', 'inline-block');
        $('div.pages').css('display', 'none');
        $('div#feedBackForm').css('display', 'block');
        $('a#showFeedBacks').css('font-weight', 'normal');
        $('a#addFeedBack').css('font-weight', 'bold');
        $('input#submitFeedBack').attr('disabled', 'disabled');
    }
    else if(locationHash == 'showFeedBacks') {
        $('div#feedBackForm').css('display', 'none');
        $('h3#clientsAboutUs').css('display', 'inline-block');
        $('h3#addFeedBackAboutUs').css('display', 'none');
        $('div.pages').css('display', 'block');
        $('div#feedBacks').css('display', 'block');
        $('a#addFeedBack').css('font-weight', 'normal');
        $('a#showFeedBacks').css('font-weight', 'bold');
    }
}
}
...