簡體   English   中英

jQuery .preventDefault();

[英]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語句變為調用.preventDefault()的if / else。 第一個腳本運行良好,但是第二個腳本失敗。 為什么? 如果organizationalElement的值在現有記錄上為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 ,而不是this函數

$("select[title='organizationalElement']").focusout(function(e) {          
   if ($(this).val() !== "I don\'t know") {
     e.preventDefault();
   }
});

僅出於完整性考慮,請注意preventDefault阻止該元素的默認操作 -例如,將頁面導航到錨的href屬性值(例如,我不確定用於select的焦點輸出的默認操作是什么,或者甚至是一個)。 preventDefault 不會阻止冒泡。

如果您碰巧關心冒泡(我並不是說您必須這樣做),則從jQuery事件處理程序返回false既可以防止默認操作,又可以防止冒泡。

preventDefault()函數與事件關聯。 您應該撥打的電話是:

e.preventDefault();

編輯以根據您的注釋進行澄清,您需要在函數調用中將e添加為變量:

$('selector').click( function(e) { e.preventDefault(); } );

您可以在jQuery preventDefault頁面上閱讀有關in的更多信息。

preventDefault方法應應用於事件對象,而不是應用於DOM對象。

您的代碼應為:

$("select[title='organizationalElement']").focusout(function(e) {          
       if ($(this).val() !== "I don\'t know") {
         e.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

讓我知道是否有幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM