微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

jQuery .preventDefault();

我有一个2个jQuery脚本 – 一个在我添加.preventDefault之前,另一个在我添加了.preventDefault后的同一个脚本的副本. jQuery在初始化中工作,但是在添加.preventDefault()之后,

初始脚本工作

$(window).load(function(){  
       $(document).ready(function(){  
         $("span[id$='_ff5_1']").each(function() { //returns a collection of elements that must be iterated through using each
            if ($(this).text() == "Yes") { //test value returned from non-input field
                clearID(); 
                $("tr.anon").hide(); 
            } else {
                $("tr.anon").show();
            }   
         });
         if ($("select[title='action']").val() == "") {   
           $("tr.actDet").hide();      
         }
         $("select[title='organizationalElement']").focusout(function() {          
           if ($(this).val() === "I don\'t kNow") {             
             alert("If no organizational element is selected,additional time may be required to route this request");         
           } // close if    
            $("select[title='action']").change(function(){         
               $(".actDet").toggle($(this).val()!= "");     
            }); // close action.change
        });//close select.focusout
       }); // close doc.ready 
    }); // close window.load

脚本不起作用

$(window).load(function(){  
   $(document).ready(function(){  
     $("span[id$='_ff5_1']").each(function() { //returns a collection of elements that must be iterated through using each
        if ($(this).text() == "Yes") { //test value returned from non-input field
            clearID(); 
            $("tr.anon").hide(); 
        } else {
            $("tr.anon").show();
        }   
     });
     if ($("select[title='action']").val() == "") {   
       $("tr.actDet").hide();      
     }
     $("select[title='organizationalElement']").focusout(function() {          
       if ($(this).val() !== "I don\'t kNow") {
         $(this).preventDefault();
       } else {             
         alert("If no organizational element is selected,additional time may be required to route this request");         
       } // close if    
        $("select[title='action']").change(function(){         
           $(".actDet").toggle($(this).val()!= "");     
        }); // close action.change
    });//close select.focusout-- close edit record stuff
   }); // close doc.ready 
}); // close window.load

我所做的唯一变化是初始if语句成为一个if / else,调用.preventDefault().第一个脚本效果很好,但第二个脚本失败.为什么?如果organizationElement的值为现有记录上的idk,我正在调用.preventDefault()方法.

@Andrew:澄清你的编辑…我应该修改我的脚本:

if ($(this).val() !== "I don\'t kNow") {
     $(this).click( function(e) { e.preventDefault(); } );
   } else {             
     alert("If no organizational element is selected,additional time may be required to route this request");         
   } // close if


b / c我注意到,如果我更改$(this).preventDefault();它将正常工作.到e.preventDefault();

如果我希望将该方法附加到$(this)对象上,您可能试图显示如何编写它,就像我最初写的那样?

解决方法

你想在事件对象上调用preventDefault,而不是这样
$("select[title='organizationalElement']").focusout(function(e) {          
   if ($(this).val() !== "I don\'t kNow") {
     e.preventDefault();
   }
});

只是为了完整性,请注意,preventDefault会阻止该元素的认操作 – 将页面导航到锚点的href属性的值,例如(我不知道select的focusout的认操作是什么,或者如果有甚至是一个). preventDefault不会阻止冒泡.

如果你碰巧关心冒泡 – 而且我不是说你一定要从jQuery事件处理程序返回false都会阻止认动作,也可以防止冒泡.

原文地址:https://www.jb51.cc/jquery/179842.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐