1

目的は何$(elem)ですか?いつ使用しますか?

JavaScript 関数に問題があります。3 つのフォームがあり、この 3 つのフォームが同じフィールド クラスを共有することがあります。関数は他の形式のクラスを取得します。友人の 1 人は、問題が解決したので $(elem) を使用すると言いましたが、$(elem) の使用方法、いつ使用するか、どのように使用するかはわかりません。それは動作します。

誰かが私にこれを説明できれば、本当に素晴らしいことです。

例もいただければ幸いです:)

例:

function dispFields(a, b, c, z, ch) 
{
    var valid;
    var blanks = Array();
    var blanks2 = Array();
    var email_reg = /^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/;
    var myVal = $('#'+a).find('input.required').map(function() {
                               return $(this).val();
                               }).get().join(',');
    var myTitle = $('#'+a).find('input.required').map(function() {
                               return $(this).attr("title");
                               }).get().join(',');

    var myEmail = $('#'+a).find('input.email-field').map(function() {
                               return $(this).val();
                               }).get().join(',');

    var myEmailtitle = $('#'+a).find('input.email-field').map(function() {
                               return $(this).attr("title");
                               }).get().join(',');

        var email_val = myEmail.split(',');
        var email_title = myEmailtitle.split(',');
        var email_error = email_val.length;
        var error_form = myVal.split(',');
        var error_title = myTitle.split(',');
        var errorlength = error_form.length;

        String.prototype.email_match = function(s){
           return this.match(s)!==null 
        }
        for(y=0;y<email_error;y++){
            if (!('indexOf' in Array.prototype)) {
                Array.prototype.indexOf= function(finds, is /*opt*/) {
                    if (is===undefined) is= 0;
                    if (is<0) is+= this.length;
                    if (is<0) is= 0;
                    for (var n= this.length; is<n; is++)
                        if (is in this && this[is]===finds)
                            return is;
                    return -1;
                };
            }
            if((error_title.indexOf(email_title[y])) == -1){    
                if(email_val[y] == ''){
                    valid = true;
                }else{
                    if(email_reg.test(String(email_val[y]).toLowerCase())==false){
                        blanks2[y] = email_title[y]+" - Should be valid email";
                        valid = false;
                    }
                }
            }
        }
        for(x=0;x<errorlength;x++){
            if(error_form[x] == ''){
                    if(myTitle == ''){
                        valid = true;
                    }else{
                        blanks[x] = "Required - "+error_title[x];
                        valid = false;
                    }
            }else{
                var myBool = (String(error_title[x]).toLowerCase()).email_match("email");
                if(myBool == true){
                    if(email_reg.test(String(error_form[x]).toLowerCase())==false){
                        blanks[x] = error_title[x]+" - Should be valid email";
                        valid = false;
                    }
                }else{
                    if(blanks == ''){
                        valid = true;
                    }
                }
            }   
        }
        if(blanks == '' && blanks2 == ''){
            valid = true;
            }else{
            valid = false;
        }

        var blankc = blanks.concat(blanks2);
        var requiredS = blankc.toString();
        var nblank = requiredS.split(',').join("\n");

        if(valid != true){  
            alert("Please review:\n\n"+nblank);
            document.getElementById(a).style.display = "";
            document.getElementById(b).style.display = "none";
        }else{
            var ssplits = z.split(',');
            var fieldlengths = ssplits.length;
            var indexes = fieldlengths - 1;
            var d;
            var e;
            d=parseInt(c,10)+1;
            e=d-1;

            if(b == ssplits[indexes]){
                $("#step"+d).addClass("active");
                $("#step"+e).removeClass("active");
                document.getElementById(a).style.display = "none";
                document.getElementById(b).style.display = "";
                document.getElementById("tbutton").style.display = "";
                document.getElementById("tcont").style.display = "none";    
                document.getElementById("captchas").style.display = "none";     
            }

            $("#step"+d).addClass("active");
            $("#step"+e).removeClass("active");
            document.getElementById(a).style.display = "none";
            document.getElementById(b).style.display = "";
            if(b == ch){
                document.getElementById("captchas").style.display = "";     
            }
        }
    return false;
}

現在、この関数はフォームを送信するたびに呼び出されますが、ページには「必須」クラスを持つ可能性のある 2 つまたは 3 つのフォームを含めることができるため、フォームのフィールドが入力されていてもエラーが警告されます。他のフォームのフィールドのクラスを取得します。

4

2 に答える 2

6

$(通常)jQuery関数です。

jQueryを使用している場合は、jQueryオブジェクトとして$(elem)ラップelemし、そのすべてのユーティリティメソッドにアクセスできるようにします。

あなたの友人はおそらくあなたがjQueryを使うことを勧めていたので、あなたは次のようなことをすることができます:

if ($(elem).hasClass('<your validation class>')) {

編集-追加したコードを見ると、すでにjQueryを使用しているように見えます。あなたの友人が言ったことのより多くの文脈がなければ、それが何を意味していたかを推測するのは難しいです。

jQueryを使用して何かを達成する方法について特定の質問がある場合は、より絞り込んだコードスニペットを使用して新しい質問をいつでも投稿できます。

于 2012-12-13T18:52:18.427 に答える
0

** $は、セレクターと組み合わせた要素のハンドラーを取得するのに役立ちます。**たとえば、クラスAの要素がある場合、$を使用してその要素のハンドラーを取得できます-> $("。A" )[。->クラスセレクター、#->IDセレクター]。したがって、jqueryを使用するには、要素を操作するために$とセレクターを使用する必要があります。つまり、$( "。A")。text( "myText")->クラスを持つすべての要素のテキストを設定しますA

于 2012-12-13T19:54:02.610 に答える