2013-01-17 2 views
1

div (.catHOLDER) 내에 중첩 된 목록을 반복하면서 img 태그를 찾고 img src를 반환하려고합니다. 내가 가진 문제는 함수가 문자열 값 대신 모든 함수 소스 코드를 반환하지만 이상한 경우 루프에서 경고하면 문자열 값을 반환한다는 것입니다.Jquery 함수가 함수 코드를 반환하지 않습니다.

$(document).ready(function(){ 
function getnestedimg() { 
    $('.catHOLDER ul').children('li').each(function(i,value) { 
      var imgstr = $(value).find('img').attr('src'); 
      if (imgstr !== undefined) { 
       alert(imgstr); 
      } 
    }); 
} 
getnestedimg(); 
}); 

내가 대신 나에게 기능 코드를 반환 imgstr 반환하려고하면 위의 코드는 IMG의 SRC의 경로 경고를 표시 할 수 있지만 것이다;

$(document).ready(function(){ 
function getnestedimg() { 
    $('.catHOLDER ul').children('li').each(function(i,value) { 
      var imgstr = $(value).find('img').attr('src'); 
      if (imgstr !== undefined) { 
       return imgstr; 
      } 
    }); 
} 
getnestedimg(); 
}); 

다음을 반환합니다.

function getnestedimg() { 
       $('.catHOLDER ul').children('li').each(function(i,value) { 
        var imgstr = $(value).find('img').attr('src'); 
         if (imgstr !== undefined) { 
          //alert(imgstr); 
         //ret urn gotya; 
         return imgstr.val(); 
         } 
       }); 
      } 

누구든지 내 처지에 도움이 될 수 있습니까, 아니면 div로 중첩 된 하위 태그를 반복하는 더 좋은 방법이 있을까요?

답변

0
$.fn.extend({ 
     getsrc : function() { 
     return $(this).find(">ul> li img").map(function() { 
        return $(this).attr("src"); 
        }); 
      } 
    }); 

    $(document).ready(function() { 
     var catHOLDERimgsrc = new Array(); 
     catHOLDERimgsrc=$(".catHOLDER").getsrc(); 
     console.log(catHOLDERimgsrc); 
    }) 

하지만이 플러그인은 무엇입니까? 내가 직접 그것을 할 것입니다 :

$(document).ready(function() { 
     var catHOLDERimgsrc = new Array(); 
     catHOLDERimgsrc=$(".catHOLDER").find(">ul> li img").map(function() { 
        return $(this).attr("src"); 
        }); 
     console.log(catHOLDERimgsrc); 
    }) 

IMO 가장 좋은 방법은 당신이 당신이 할 수있는 충분하지 않은 경우 모든 이미지는 SRC 그렇지 않으면 다음 선택을 변경하려는 경우 배열 (즉 배열 값의 집합을 얻기 위해 반복

+0

nb 이후 jt1.9 attr이 deprecated되고 소품이 선호되어야한다고 생각합니다. 그들은 몇 가지 예외를 언급했지만 – mikakun

+0

'attr'은 분명히 * 더 이상 사용되지 않습니다 *. 속성을 얻거나 설정하기 위해'attr'을 사용하는 것은 더 이상 사용되지 않습니다. 그것은 의도 된 목적을 위해 여전히 유용합니다 : 속성 가져 오기/설정. OP가'src' 속성이나'src' 속성을 얻고 자하는지 여부는 전혀 다른 이야기입니다 ... –

+0

안녕하세요 Mikakun, 나는 다음을 시도했지만 작동하지 않았습니다. 여전히 함수 코드를 반환했습니다. \t \t \t $ (문서) .ready (함수() { \t \t \t \t 함수 getnestedimg() { \t \t \t \t \t VAR의 catholderimages = 새로운 배열(); \t \t \t \t catholderimages = $ ('. catHOLDER '.) 찾을 수 있습니다 ('.> UL> 리> IMG ')지도 (함수() { \t \t \t \t 반환 $ (이) .attr ("SRC"); \t \t \t \t}); \t \t \t \t} \t \t \t \t 경고 (getnestedimg); \t \t \t}); – user1988149

1

getnestedimg 함수 안에있는 return 문은 each에 전달 된 중첩 된 익명 함수의 내부에 있습니다. 그것이 getnestedimg의 발신자에게 어떠한 가치도 반환하지 않는 이유입니다. 제안 된대로이 값을 getnestedimg의 함수 변수에 저장해야합니다.

또한 closures을 읽어 보시기 바랍니다.

1

나는 이런 식으로 뭔가를 사용하십시오 :

var image_src = $('.catHOLDER ul > li img[src]').first().attr('src'); 

> li img[src]src 속성을 가지고 li 요소의 자손 만 img 태그를 선택합니다. .first()은 처음 것만 잡습니다.

해당 조건과 일치하는 요소가없는 경우 image_str === undefined.

+1

@JosephSilber : 원본 코드에는 그것들도 포함되어 있지만 속성 선택자로'[src! = ""]'를 사용하여 제외시킬 수 있습니다. – Blender

+0

+1 아름다운 (평소와 같이). –

+0

안녕 블렌더, 나는 다음과 같은 시도했지만 슬프게도 작동하지 않았다; \t \t \t $ (문서) .ready (함수() { \t \t \t \t 함수 getnestedimg() { \t \t \t \t \t VAR image_src = $ ('. catHOLDER UL> 리튬 IMG [SRC]). 제 ().attr ('src'); \t \t \t \t \t return image_src; \t \t \t \t} \t \t \t \t 경고 (getnestedimg); \t \t \t}); – user1988149

관련 문제