2012-11-15 6 views
0

jquery로 html 태그의 속성 값을 가져 오려고했습니다.jQuery - 정의되지 않은 변수로 어려움을 겪고 있습니다.

$query = "SELECT * FROM frontpage_modules"; 
     mysql_query("SET NAMES 'utf8'"); 
     $result = mysql_query($query) or (mysql_error()); 
     while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { 
      $list[] = $row['module_name']; 
      $name[] = $row['name']; 
      $img[] = $row['img']; 
      $link[] = $row['link']; 
      $module_content[] = $row['module_content']; 
     } 
    ?> 


    <form action="ChangeFrontpageModule.php" method="post"> 
    <ul id="gallery"> 
      <?php 

       for ($idx = 0; $idx < count($list); $idx+=1) { 
        echo "<li data-itemid='" . $idx . "'>"; 
        echo "<div class='drag_div'>"; 


        echo '<div class="kundeutsagn">'; 
        echo '<img src="http://www.amedisin.no/pictures/artikler/'.$img[$idx].'" alt="Top5" title="Top5" />'; 
        echo '<div class="statement_top">'; 
        echo '<h5>'.$name[$idx].'</h5>'; 
        echo "<input type='text' name='title' value='".$name[$idx]."' />"; 
        echo $module_content[$idx]; 
        echo '</div></div>'; 


        echo "</div>"; 
        echo "</li>"; 
       } 
      ?> 
     </ul> 
    </form> 

입력 항목의 data-itemid (li 내) 및 값에 저장된 ID를 전달하려고합니다. , 속성 값이 "정의되지 않은"오류가 returnes하지만

다음

는,이 코드는 "VAR 제목 = $ (이)) (.val"하지만 입력 요소에서 데이터를 얻을 수있어

당신이 게시 당신은 $(this).parent('ul')에서 data-itemid 속성을 요구하고 오류

<script> 
     $(function() { 
    $('h5').click(function() { 
     $(this).slideUp().next('input').slideDown(); 
    }); 
    $('ul#gallery input').change(function() { 
     var id = $(this).parent('li').attr('data-itemid'); 
     var thisParam = $(this); 
     var title = $(this).val(); 
     $.ajax({ 
      type: 'POST', 
      url: 'JavaScript/ChangeFrontpageModule.php', 
      data: 'title=' + title + '&id=' + id, 
      success: function(response) { 
       $('input').slideUp(); 
       $(thisParam).prev('h5').text(title).slideDown(); 
       $('#response').fadeIn(1000).empty().append(response).prepend('<span id="x">X</span>'); 
       $('span#x').click(function() { 
        $('div#response').fadeOut('slow'); 
       }); 
      } 
     }); 
    }); 
}); 
     </script> 

답변

2

를 반환 JQuery와 스크립트,하지만 첫 번째 조각의 속성이 아니라 <ul>에서 <li> 요소입니다.

편집 : 자세히 살펴보면 inputli의 직계 종속이 아닙니다. 대신 closest()을 사용하십시오.

$(this).parent('li')$(this).closest('li')으로 전환하면 문제가 없습니다. closest()에 대한 @의 wirey의 의견에

신용, 내가 실수,

+0

당신이 올바른지 parents()을 제안했다 @ 크리스는 사실 내가 자리를 놓친 그러나 그것은 리 중 하나 –

+0

작동하지 않습니다. 더 자세히 살펴보고 업데이트되었으므로 잘 작동합니다. – Rick

+2

.parents()는 모든'li' 부모를 선택하기 때문에'ul'을 중첩했다면 여러 개의'li'를 얻을 수 있습니다 .closest()는 아마도 더 좋을 것입니다 –

관련 문제