2013-07-30 2 views
0

설정 이름이 같지만 번호가 다른 jQuery 플러그인을 만들고 있습니다. 설정이 루프에 대한 모든 인스턴스를 통해 cName18이 그래서 실제 플러그인에 내가 루프를 원하는, 즉의jQuery 플러그인 - 설정 용 루프

<script> 
    $(document).ready(function(){ 
    $('body').myPlugin({ 
     cName1 : 'First name here', 
     cName2 : 'Second name in here', 
     cName3 : 'Third name here', 
    }); 
    }); 
</script> 

무기한 금액이있을 수 있지만 '전을 사용하여 : 그래서 내 HTML 파일에서 호출 된 스크립트는 다음과 같습니다 '배열의 일부를 호출하는 대신 문자열의 일부로. 다음과 같은 내용 :

for (var i=1;i<20;i++) { 
    var cName = settings.cName + i; 
    if (cName) { cNameArray.push(cName); } 
} 

분명히 작동하지 않습니다. 누구도 'for'를 for 루프처럼 사용하는 법을 알고 있습니까?

+0

을 나는 당신이 정말 배울 필요가 추측 [배열 객체] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array) ... –

답변

2

배열이 필요한 것 같습니다.

$('body').myPlugin({ 
    cNames: [ 
    'First name here', 
    'Second name in here', 
    'Third name here' 
    ] 
}); 

당신이뿐만 아니라 설명을 원하기 때문에 주석을 기반으로 빠른 업데이트 :

$('body').myPlugin({ 
    cNames: [ 
    { 
     name: 'First name here', 
     description: 'First!' 
    }, 
    { 
     name: 'Second name in here', 
     description: 'I am the second one!' 
    }, 
    { 
     name: 'Third name here', 
     description: 'BRONZE BABY' 
    } 
    ] 
}); 
+0

감사합니다. 이것은 좋은 해결책입니다. 각 cName에는 cDescription도 있으므로 그 이유 때문에 배열에 넣고 싶지는 않습니다. – Coop

+0

필자는 필요한 모든 필드 수에 대한 내 대답을 업데이트했습니다. 이 작업을 위해서는 배열을 사용해야합니다. 당신은 어쨌든 배열로 끝내고 있습니다. –

+0

예. 알겠습니다. 이것은 아마 당신의 도움을 주셔서 감사합니다. – Coop

1

이 기능을 사용하지 않습니까?

for (var i=1;i<20;i++) { 
    var cName = settings['cName' + i]; 
    if (cName != undefined && cName != null) { cNameArray.push(cName); } 
} 

그러나, 더 나은 방법 아이디어는 플러그인이 같은 'CNAMES "의 배열을 받아 들일 수 있도록하는 것입니다 :

$(document).ready(function(){ 
    $('body').myPlugin({ 
     names : ['First name here', 'Second name in here', 'Third name here'] 
    }); 
    }); 

그런 다음, 플러그인, 당신은 간단한 $를 사용할 수 있습니다. 각각은 배열을 반복합니다.

+0

아니요 작동하지 않습니다. 나는 문제가 그것이 내가 문자열을 생성하는 것처럼 거의 'cName1, cName2 등을 출력 할 것'을 추가하고 싶어한다는 것을 이해하고 있다고 생각한다. – Coop

+0

멋지다 배열은 효과가있을 것이다. 그러나 내가 뭘 찾고 있는지 알지 못한다. 각 cName은 cDescription을 가지므로 실제로 배열에 묶어두기를 원하지 않습니다. 내 질문에 대한 해결책을 찾았습니다. thogh - 위에 게시했습니다. – Coop

0

내 자신의 질문에 대한 해결책을 찾을 수 없습니다

for (var i=1;i<20;i++) { 
     var cName = 'cName' + i; 
     if (settings[cName]) { cNameArray.push(cName); } 
    } 
+0

개념이 다릅니다. 나는 'cName'을 객체가 아닌 자체 변수 인 문자열로 처리했습니다. – Coop

+0

나는 'cName'대신에 cName이라는 오타가 있었지만 그 이외의 두 가지 예는 거의 같습니다. 나는 "다른 개념"이 어디에도 보이지 않는다. – MightyPork

+0

도움을 주셔서 감사합니다.하지만 이미 답변을 수락했습니다. 내 원래의 문제는 필요한 결과를 얻기 위해 객체와 문자열을 혼합하는 방법을 이해하는 것이 었습니다. 원래의 솔루션으로는 아무런 문제가 없었지만 문제를 해결하는 데 필수적입니다. – Coop

관련 문제