2016-09-05 9 views
-2

動的な子の中で動的な親に関しては、私はまだそれほど統計的ではありません。動的な親子の子オブジェクトでイベントを処理する方法

あなたの情報について私はJavascriptとJqueryについて非常に新しいですが、誰かが正しい指示と権利の構文を伝えれば追いつくことができます。私はクリーンなコードを愛しています。そのコードから、私はより多くを学び理解することができます。

レッツは、私はそれがfirebugsに同じです。この構造体のhtmlを持っていると言う: - 私の頭の上に実際に

<div name="div0" class="div0"> 
<input name="txt0" class="txt0"> 
<br/><br/> 
<div name="div1[]" class="divL1"> 
    <button class="btn1"></button> 
    <button class="btn2"></button> 
    <input name="txtL1_a[]" class="cLtxt1"> 
    <input name="txtL1_b[]" class="cLtxt1"> 
      <br/><br/> 
      <div name="div2[]" class="divL2"> 
        <div id="ui-widget"> 
        <input name="txtL2_a[]" class="cLtxt2 autosuggest"> 
        </div> 
        <input name="txtL2_b[]" class="cLtxt2"> 
      </div> 
    <br/><br/> 
<div name="div1[]" class="divL1"> 
    <button class="btn1"></button> 
    <button class="btn2"></button> 
    <input name="txtL1_a[]" class="cLtxt1"> 
    <input name="txtL1_b[]" class="cLtxt1"> 
      <br/><br/> 
      <div name="div2[]" class="divL2"> 
        <div id="ui-widget"> 
        <input name="txtL2_a[]" class="cLtxt2 autosuggest"> 
        </div> 
        <input name="txtL2_b[]" class="cLtxt2"> 
      </div>     
</div> 
<br/><br/> 

質問の多くを持っていますが、私は最初の数質問してみましょう。

1.は、私が実行したい.autosuggestそれがこの前にあるため、通常のフォームに私のために複雑だところ、私は実行にそれを管理することができますが、.autosuggest内部の動的な親のdivとダイナミック入力に配置されたとき、私は値を取得することはできませんし、オートコンプリートを表示します。

与えられたidによって "txtL2_a []"関数SearchTextはパフォーマンスの自動補完を行うことができず、どのインデックスがそれを行っているのかわかりません。

function SearchText() { 
     $(".autosuggest").autocomplete({ 
      source: function (request, response) { 
       $.ajax({ 
        type: "POST", 
        contentType: "application/json; charset=utf-8", 
        url: "frmsetuptrip.aspx/GetAutoCompleteData", 
        minLength: 3, 
        data: "{'presearch':'" + document.getElementById('txtL2_a[]').value + "'}", 
        dataType: "json", 
        success: function (data) { 
         if ((data.d).length == 0) { 
          //$('#button9').show(); 
          var result = [ 
    { 
     label: 'No matches found', 
     value: response.term 
    } 
          ]; 
          response(result); 
         } 
         else { 
          response(data.d); 
         } 
        }, 
        error: function (result) { 
         alert("Error"); 
        } 
       }); 
      } 
     }); 
    } 

2.は、私はいくつかの自動車がいっぱい必要

<div name="div1[]" class="divL1"> //index 1 

に言ってみましょう - 私は

<input name="txtL2_a[]" class="cLtxt2 autosuggest"> //index :1 

を埋めるときに自動的に

<input name="txtL2_b[]" class="cLtxt2"> 'Index 1 
内の値としましょう

は親のインデックスのみを変更します。

3.前に、以下のこの擬似コードのような特定のサブ機能やタスクを行く場合、私はすべてのイベントをキャッチし、それをすることによって手の込んだことができます一つの機能とにかくあります: -

$("div.div0").each(function (event) { 

    if (event=="keyup" on child=="divL1"+index[0]){ 
     //detect more spesific which object are doing that 
     if (whoisdoing=="txtL1_a[]"+index[0] { 
      //then do action etc: fill up parent input 
      $("div0.txt0").val($(txtL1_a.index[0]).val()); 
     } 
     if (whoisdoing=="txtL1_b[]"+index[0] { 
     //then do action etc: fill up childs input 
      $("div2[index[0]].txtL2_b[index[0]].val($(txtL1_b[index[0]]).val()); 
     } 
    } 

//event - keypress 

//event - click 

//and many more 

    }); 

私が見つけることができませんが、上記のすべての問題に関するインターネット。誰かが解決策を持っている、あるいはすでにその機能を開発していれば分かち合いますし、これは扱いが容易ではないと私は信じています。

とにかく私の質問を読んで返信してくれてありがとう。

よろしくお願いいたします。

+0

あなたのhtmlは無効です。でも、http://jsbeautifier.org/はそれを修正できません。 – baao

+0

本当に私を助けたいと思ったら、私が編集した後、私のHTML構造を見直してください。 – ahadeveloper777

答えて

1

私はもう一度考えると思います - それは解決策があるはずです!

権利今私はKEYUPを処理することができますし、私はいくつかのタスクを行うことができる特定の入力タグを私の動的な子供をクリックします。私は動的な親の中の動的な子供の中で見つけました。私は、直接のクラス名とCatchの親の索引を最初に使う必要があります。

あなたは私のHTML構造については、以下の構文を使用することはできません: -

$(document).ready(function() { 
     var buttons = document.getElementsByTagName('button'); 
     var buttonsLength = buttons.length; 
     for (var i = 0; i < buttonsLength; i++) { 
      buttons[i].addEventListener('keyup', clickResponse, false); 
     }; 
    }); 
    function clickResponse() { 
     // do something based on button selection here... 
    } 

私が唯一の実行時間をアドオンのみ動的な子/親なしで最初のレベルの親上で実行することができ、構文上に発見しました。

私の問題は、番号2と3を解決するためにの下にこの構文を使用しています

 $("div.div0").on("keyup", "input", function() { 
      //detect name and val which input are doing keyup 
      handler = $(this).val(); 
      name = $(this).attr('name'); 
      parHandler = name; 
      //only this input I want do some task 
      if (name == "txtL1_a[]") { 
       dcAction = "FillUpOtherInput"; 
       FillUp; //run functions     
      } 
     }); 

     function FillUp() { 
      if (dcAction == "FillUpOtherInput") { 
       alert("Handler Name: " + parHandler + " Index Level :" + dc2); 
       //make sure right Parent Index before insert a value 
       //--should i loop 
       $("div.purchase-items").each(function (i) { 
        alert(i); 
        if (i == dc2) { 
         $(this).find("input[name='txtL1_b[]']").val("Hai"); 
        } 
        i+1 
       }); 
       parHandler = ""; 
       dc2 = ""; 
       dcAction = ""; 
      } 
     } 

はい!私は同じ親のインデックスの他の入力値を埋めることができます。

Dynamic Parentの中のDynamic Childに関して私のような行動をすることに問題がある人は、あなたの問題を解決するためにこの構文を参照することができます。

もっと良い解決策をお持ちの方は、私のような人をJqueryの機能の初心者として助けてください。以下、この従っfillup機能に短い構文を作るために

0

: -

function FillUp() { 
      if (dcAction == "FillUpOtherInput") { 
       $(div.div0).eq(dc2).find("input[name='txtL1_b[]']").val("Hai"); 
       parHandler = ""; 
       dc2 = ""; 
       dcAction = ""; 
      } 
     } 

を私はちょうどEQ知っている(あなたがインデックスを知っていれば***を*)**は、動的などの特定の要素に直接行くされています親子ベースのインデックスを指定します。

私はこのライン構文を使用しているのダイナミックた子検出されたオートコンプリートに関する質問はありません1については
1

: -

function SearchText(pIndex,iValue) { 
     //alert(dc2 + "/" + iValue); 
     $("div.divL2").eq(pIndex).find(".autosuggest").autocomplete({ 
      source: function (request, response) { 
       $.ajax({ 
        type: "POST", 
        contentType: "application/json; charset=utf-8", 
        url: "frmsetuptrip.aspx/GetAutoCompleteData", 
        minLength: 3, 
        data: "{'presearch':'" + $("div.divL2").eq(pIndex).find("input[name='txtL2_a[]']").val() + "'}", 
        dataType: "json", 
        success: function (data) { 
         if ((data.d).length == 0) { 
          //$('#button9').show(); 
          var result = [ 
    { 
     label: 'No matches found', 
     value: response.term 
    } 
          ]; 
          response(result); 
         } 
         else { 
          response(data.d); 
         } 
        }, 
        error: function (result) { 
         alert("Error"); 
        } 
       }); 
      } 
     }); 
    } 

今私のオートコンプリートがtxtL2_a []値をキャッチし、リストを表示するためにである親を知ることができます。私が学び、あなたに共有したいと何

は、キー

$( "div.divL2")。EQ(pIndex).find( "オートサジェスト")

$(あります親の名前です。)eq(-put parent index - )find(-class name on input-)

これは実行する必要があります。

私は新しく、この質問を読んだ人のおかげで、誰かが私がここに書いたことから何か考えを得ることができれば幸いです。 誰が私を好きに助けようとしているのですか@baao本当にありがとうと感謝しています。

この問題について、より良い構文やスクリプトがあれば、あなたの意見を共有してもいいですが、おそらくそれは検索があり、私のような問題に直面するかもしれません。

私のコードを共有して自分の状況に関する問題を解決してくれてうれしいです。

関連する問題