[英]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.