私は2つのjQueryスクリプトを用意しています.1つは.preventDefaultを追加する前、もう1つは.preventDefaultを追加した後に同じスクリプトをコピーしたものです。 jQueryのは、初期に動作しますが、私は.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になります。最初のスクリプトはうまくいくが、2番目のスクリプトは失敗する。どうして? 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私は私が変更された場合、それは正しく動作しますtaht指摘$(this).preventDefault(); to e.preventDefault();
$(this)オブジェクトにメソッドを添付したいと思っているのでしょうか?
ありがとうございました。私はpreventDefaultがバブリングからイベントを止めないことを知っていますが、私はバブリングをしたくないとは確信していません。おそらくjQueryスクリプト全体が機能しなくなったのでしょうか? – jg100309
@ jg100309 - いいえ、元の問題は、イベントオブジェクトではなく、これでpreventDefaultを呼び出していたことでした。あなたのハンドラにイベントオブジェクトを渡して、私の答えのように* it *のpreventDefaultを呼び出してください。 –
*サイドノート:2つの '' 'の間に' ''をエスケープする必要はありません。* – SeinopSys