Событие jquery предотвращение утечки в функции - PullRequest
0 голосов
/ 01 августа 2011

Это мой первый код:

$j('.toggle').delegate('','click',function(e){
    e.preventDefault();
});

Это мешает моему тегу делать что-либо.

Теперь я хочу это в такой функции:

$j('.toggle').delegate('','click',function(e){
    banner();
});

if(x)
{
banner();
}

function banner() 
{ 
e.preventDefault(); 
}

Но я не могу использовать событие сейчас, как я могу решить это?

EDIT

Спасибо за ответ, но я решил свою проблему другим способом. Это код, если вы заинтересованы. Когда вы скрываете баннер, баннер остается скрытым на всех страницах, проверяя куки. Когда вы откроете его снова, он останется открытым на всех страницах.

    // Set cookie if there is no cookie
    if(getCookie() != 0 && getCookie() != 1)
    {
        setCookie(1);
    }

    // Close the banner if cookie = 0 when page loads
    if(getCookie() == '0')
    {
        closeBanner();
    }

    // Set the cookie   
    function setCookie(status) {
        $j.cookie('status', status, { path: '/', expires: 100 });
        return false;
    }

    // Get the cookie
    function getCookie() {
        //console.log($j.cookie('status'));
        return $j.cookie('status');
    }

    // Close and open the banner on click

    $j('.toggle').delegate('','click',function(e){
        e.preventDefault();

        if(getCookie() == 1)
        {
            setCookie(0);
            closeBanner();
        } else if(getCookie() == 0)
        {
            setCookie(1);
            openBanner();
        }
    });

    // Close the banner
    function closeBanner()
    {
        var src = $j('#img_lipke').attr("src").replace("lipske", "lipske_down");
        $j('#img_lipke').attr("src", src);
        $j('#bannerbottom').css('margin-top','5px');

        changeBanner();
    }

    // Open the banner
    function openBanner()
    {
        var src = $j('#img_lipke').attr("src").replace("lipske_down", "lipske");
        $j('#img_lipke').attr("src", src);
        $j('#bannerbottom').css('margin-top','0');

        changeBanner();
    }

    // Open or close the banner
    function changeBanner(e) 
    {
        $j('#banner').animate({ 
            height: 'toggle'
        }, 800, function() {
            // Animation complete.
        });
    }

Ответы [ 2 ]

2 голосов
/ 01 августа 2011

Я не уверен, что вы пытаетесь выполнить, но если вы хотите использовать объект события в функции banner, просто передайте его.

$j('.toggle').delegate('','click',function(e){
    banner(e); // pass "e" as argument
});

function banner(e) {
    e.preventDefault();
}
2 голосов
/ 01 августа 2011

Просто добавьте preventDefault после вашего звонка в banner

$j('.toggle').delegate('','click',function(e){
    banner();
    e.preventDefault();
});
...