2017-11-20 6 views
1

"my_dynamic_list"というリストから "children-li"という名前のすべてのli要素を取得する関数があります。 各li要素にはobject_ck_bx、write_ck_bx、view_ck_bxの3つのチェックボックスがありますが、チェックボックスの値を取得する必要がありますが、なぜコードはliタグ名にアクセスできるのですか?李子?Uncaught TypeError:children [i] .childrenは関数ではありません

function getTreeData() { 
     // Get All Li elements thats contains the checkboxes form the type object,read,write 
     var children = $('#my_dynamic_list').children().find('li[name=children-li]'); 
     var extracted_data = []; 
     for (i = 0; i < children.length ; i++) { 
      alert(children[i].tagName); //this gives li 

      if (children[i].children().find('input[name=object_ck_bx]').checked == true) { // This Line gives Uncaught TypeError: children[i].children is not a function 
       var profile_code = children[i].children().find('input[name=object_ck_bx]').id; 
       var view = children[i].children().find('input[name=view_ck_bx]').checked; 
       var write = children[i].children().find('input[name=write_ck_bx]').checked; 
       alert('profile_code' + profile_code); 
       var item = []; 
       item = { Id: profile_code, read: view, write: write }; 
       extracted_data.push(item); 
      } 

     } 
     // alert(extracted_data); 
     return extracted_data; 
    } 

HTMLコード: enter image description here

ブラウザ中のLiプロパティはあなたが初めて.children()を呼び出すと、あなたはHTMLElementオブジェクトのプレーンな配列を取り戻す The li properties in the browser looks like

+0

このためdupetargetがなければなりません。 jQueryオブジェクトにインデックスを付けると、jQueryオブジェクトではなく、生のDOM要素が取得されます。 DOM要素は 'children'関数を持っていません(彼らは' children'プロパティを持っています)(編集:私が思ったよりも簡単に見つけられた、私は検索用語で運が良かった。 children()。find(...) 'はchildren.eq(i).children()。find(...)'になります。 –

+0

@ T.J.Crowder投稿する前にまずそれを試しましたが、うまくいきませんでした。ありがとうございました。 – Furqan

+0

'$(children [i])'は 'children.eq(i)'と書くのは長年の、慣れない方法なので、間違っていました。 –

答えて

1

のように見えます。呼び出すメソッド.children()は、jQueryコレクションのメソッドです。だから、平野HTMLElementからjQueryオブジェクトを作成しますがchildren[i]を取得してから返されます、jQueryのコンストラクタにそれをラップするためには、そのよう:

$(children[i]).children() // ... 
関連する問題