Jquery手机.在新页面访问多次点击

前端之家收集整理的这篇文章主要介绍了Jquery手机.在新页面访问多次点击前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
所以我使用 Jquery手机取得巨大成功,除了一个问题.
现在每次动态内容页面用户导航,无论什么内容显示,底部总是有一个按钮,当点击电子邮件内容发送到指定的地址时;工作很棒
现在第一次加载一个页面时,点击会触发该事件一次.在第二次访问时,它被发射了两次,第三次3次等等,你得到点.我已经浏览了网络,并实施了我可以遇到的每一个修复,例如使用“pagecreate”而不是“pageinit”,绑定,解除绑定,删除div,关闭DOM中的缓存,但没有任何工作.我唯一的成功是在点击中使用.one(),但是如果再次点击,则需要触发.这是结构.我必须.js文件加载每个与此开始
$( "#page" ).live( "pageinit",function() {

现在我有一个电子邮件功能和其他东西在一个文件,但它使它更容易分离,我听说没关系.现在,这是在pageinit中调用的电子邮件功能

$('.eb').live('click',function() {
        var id = $('.eb').attr('id');
        var to = $('#recipient').val();
        var message = $('#email').html();

        var atpos = to.indexOf("@");
        var dotpos = to.lastIndexOf(".");
        if (atpos < 1 || dotpos < atpos + 2 || dotpos + 2 >= to.length) {
            alert('Please enter a valid email address!');
            return false;
        } 

        if(to.length == 0) {
            alert('Please enter a valid email address!');
            return false;
        } 

        $.mobile.showPageLoadingMsg();

        $.post('./services/service.email.PHP',{ id: id,to: to,message: message},function(data) {
            if(data.success == true) {
                $.mobile.hidePageLoadingMsg();
                alert('Your recipe has been sent!');
                $('#recipient').val('');
                return true;
            } 

            if(data.success == false) {
                if(data.fail == 1) {
                    alert('An error has occured sending your recipe. Try again soon!');
                    return false;
                }

                if(data.fail == 2) {
                    alert('Please enter a valid email address!');
                }
            }
        },'json');
            return false;
    });

除了每个新页面上的.click的增量触发之外,一切都完美无缺.
任何人都可以带领我走向正确的方向吗?

解决方法

从jQuery 1.7开始,不推荐使用.live()方法.使用.on()来附加事件处理程序.

如果您使用1.7尝试使用.off()先取消绑定点击事件.

$('.eb').off('click').on('click',function() {
 // ...
});

如果你必须使用.live(),你可以用.die()取消绑定事件.

$('.eb').die('click').live('click',function() {
 // ...
});

或更好地使用.delegate()和.undelegate()取消父元素:

$(document).undelegate('.eb','click').delegate('.eb','click',function() {
 // ...
});

猜你在找的jQuery相关文章