jquery事件中的preventDefault函数

时间:2011-08-01 13:06:42

标签: jquery events mouseevent

这是我的第一个代码:

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

这阻止了我的标签做任何事情。

现在我想要这样的函数:

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

if(x)
{
banner();
}

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

但我现在不能使用这个事件,我该如何解决?

修改

感谢您的回复,但我以另一种方式解决了我的问题。 如果您有兴趣,这是代码。 隐藏横幅时,横幅将隐藏在所有页面上,检查cookie。 当您再次打开它时,它将在所有页面上保持打开状态。

    // 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 个答案:

答案 0 :(得分:2)

只需在致电preventDefault

后添加banner即可
$j('.toggle').delegate('','click',function(e){
    banner();
    e.preventDefault();
});

答案 1 :(得分:2)

我不确定你要完成什么,但如果你想在banner函数中使用事件对象,只需传递它。

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

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