1

私は1つの簡単なコードを持っています:

$(document).ready(function(){
    $(".button").click(function(){
        var f = $(this).closest('form');
        if(f != null){
            $(f).append('<div class="loadmask"></div>');                        
        }
    });
});

ご覧のとおり、「loadmask」クラスの div を親フォームに追加したいと考えています。ここでの奇妙なこと$(f).append('<div class="loadmask"></div>');はにエンコードされていて $(f).append("<div class="loadmask"></div>&#34;);、javascript エラーをスローします。

アップデート:

コードを次のように変更しました

$(document).ready(function(){           
            $(".button").click(function(){
                $(this).parent('form').append("<div class='loadmask'></div>");
            });
         });

それでもJavaScriptエラーが発生します:

SyntaxError: missing ) after argument list
[Break On This Error]   

$(this).parent('form').append("<div class="loadmask"></div>&#34;);

そしてEclipseコンソールで:

00:57:17,593 ERROR [MinifierUtil:108] 22: 65: missing ) after argument list
00:57:17,593 ERROR [MinifierUtil:108] 22: 79: unterminated string literal
00:57:17,593 ERROR [MinifierUtil:108] 1: 0: Compilation produced 2 syntax errors.
00:57:17,593 ERROR [MinifierUtil:74] JavaScript Minifier failed for  


         $(document).ready(function(){          
            $(".button").click(function(){
                $(this).parent('form').append("<div class="loadmask"></div>&#34;);
            });
         });

私は eclipse Juno (UTF-8 によるエンコード プロジェクト)、liferay 6.1 ga-1 および jsf-2.0、icefaces-3 を使用しています ....

4

3 に答える 3

2

問題を再現できません。私が疑うのは、何らかの理由で、JavaScript ファイルにエンコードされた追加の文字があり、&#34;jQuery で表現されることです。&#34はたまたま引用符( ") のエンティティであるため、コードに余分なものがないことを確認してください。JavaScript ソース ファイルを消去してから、もう一度お試しください。

closestまた、決して返さないことに注意してくださいnullform要素が見つからない場合は、空のリストが返されます (これは、フォームのないページでコードを実行することで簡単に確認できます)。したがって、次のように簡単にコードを安全に書くことができます。

$(document).ready(function(){
    $(".button").click(function(){
        $(this).closest('form').append('<div class="loadmask"></div>');
    });
});

証明については、この Fiddle を参照してください: http://jsfiddle.net/p48Rb/3/

于 2012-10-16T11:05:22.000 に答える
1

を使用してみてください。長さ > 0 (フォームが最初の要素) またはそうでない (長さ 0 は に評価される) jQuery オブジェクトを返すif (f.length)ためです。言い換えれば、決して ではありません。$(this).closest('form')falsyfnull

于 2012-10-16T11:06:15.033 に答える
1

理由はよくわかりませんが、私の xhtml (jsf2.0) はスクリプト コード内で html char をデコードできないようです。

( && 演算子の & 記号は同じエラーを発生させます)

ただ変える

$(this).parent('form').append("<div class="loadmask"></div>");$(this).parent('form').append("div").addClass("loadmask");

& では、 && の代わりに子 if ステートメントを使用すると、問題が解決します。

于 2013-03-13T03:12:10.270 に答える