2011-07-13 11 views
4

私のコードに何か問題があります。クロムコードのスペクトロメーターは、21行目にプローブメルがあり、このような問題はUncaught TypeError: Object #<HTMLElement> has no method 'parent'と言います。これは、jQueryのコードです:jQuery - Uncaught TypeError:オブジェクト#<HTMLElement>には 'parent'メソッドがありません

<ul> 
    <li id="3"><a href="/my/proper/url/">this is for eat</a>&nbsp;&nbsp; 
    <span class="plus">+</span></li> <!-- after clickin this I get proper json data, and "+" is cahnged to "-", and the next "<ul>" element appear --> 
    <ul> 
    <li id="4">fishes&nbsp;&nbsp; 
    <span class="plus">+</span></li> 
    </ul> 
</ul> 

とするとき、私は上をクリックして " - " 最初の "LI" 要素にし、再度 "+" に私が手::

$('.plus').click(function(){ 
    if ($(this).text() == "+"){ /* 1 IF  */ 
     $(this).text("-"); 

     if (! ($(this).parent().next().is('ul'))){   /* 2 IF */ 
     var element_id = $(this).parent().attr('id') 
     var id = '#' + element_id 
     var url = "/accounts/profile/thingh_update/" + element_id + "/"; 

     $.getJSON(url, function(data){ 
     var items = [] 

     $.each(data, function(index, value) { if(value.pk)   
     items.push('<li id="' + value.pk + '">' + value.fields.title + '&nbsp;&nbsp;<span class="plus">+</span></li>');}); 

     $('<ul/>', { 
     html: items.join('') 
     }).insertAfter(id); }) 
     } else {(this).parent().next().children().show()} /* 2 ELSE */ 
     } else {$(this).text('+').parent().next().hide()} /* 1 ELSE */ 
    })  
}) 

私のHTMLは次のようになります

Uncaught TypeError: Object #<HTMLElement> has no method 'parent' 

多分私は何かが分かりませんでしたが、私はまだjQueryに進んでいません。私は初心者のためのいくつかの寛容と、私が間違いを犯す可能性のある何かの欲求を求めます。おかげさまで この行で

答えて

16

} else {(this).parent().next().children().show()} 

あなたはむしろjQueryオブジェクトよりも、DOM要素にparent()を呼び出そうとしていることを意味する、(this)$が欠落しています。

+0

+1、あなたは私のために今日のコンピュータの前に長すぎる –

+0

:-)私を打ちます。ありがとう:) – krzyhub

2
} else {(this).parent().next().children().show()} 

あなたは(this)$を忘れてしまいました。それは次のようになります。

} else {$(this).parent().next().children().show()} 
+0

時々私はコードを見ているときに盲目です。ありがとう – krzyhub

関連する問題