jg1*_*309 14 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
Run Code Online (Sandbox Code Playgroud)
脚本不起作用......
$(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
Run Code Online (Sandbox Code Playgroud)
我做的唯一更改是初始if语句变为if/else,调用.preventDefault().第一个脚本运行良好,但第二个脚本失败.为什么?如果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
Run Code Online (Sandbox Code Playgroud)
... b/c我注意到如果我改变$(this).preventDefault();它会正常工作.到e.preventDefault();
如果我希望将方法附加到$(this)对象上,就像我最初编写它一样,你是否可能试图展示如何编写它?
Ada*_*kis 31
您想要调用preventDefault事件对象,而不是this
$("select[title='organizationalElement']").focusout(function(e) {
if ($(this).val() !== "I don\'t know") {
e.preventDefault();
}
});
Run Code Online (Sandbox Code Playgroud)
只是为了完整性,请注意,这会preventDefault阻止此元素的默认操作 - 例如,将页面导航到锚点的href属性值(我不确定选择焦点的默认操作是什么,或者是否有是一个).preventDefault 不会阻止冒泡.
如果你碰巧关心冒泡 - 而且我不是说你必须从jQuery事件处理程序返回false,它们都会阻止默认操作,并且还会阻止冒泡.
该preventDefault()功能与事件相关联.你应该叫的是:
e.preventDefault();
Run Code Online (Sandbox Code Playgroud)
编辑以根据您的注释澄清,您需要e在函数调用中添加为变量:
$('selector').click( function(e) { e.preventDefault(); } );
Run Code Online (Sandbox Code Playgroud)
您可以在jQuery preventDefault页面上阅读更多相关信息.
该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
Run Code Online (Sandbox Code Playgroud)
如果这有帮助,请告诉我!
| 归档时间: |
|
| 查看次数: |
36523 次 |
| 最近记录: |