2014-05-12 6 views
0

알려진 src를 사용하여 img의 alt 속성을 가져 오거나 변경하고 싶습니다. 문제는 DOM에서 직접 작업 할 수 없다는 것입니다. 내 HTML은 변수에 저장됩니다.htmlstring에서 src로 대체하기

나는 HTML 편집기와 내 그림 편집기가 있습니다. piceditor의 그림 서브 라인을 변경하면 HTML 편집기에서 관련 img 태그를 업데이트해야합니다.

가장 좋은 것은 콘텐츠의 첫 번째 alt 속성입니다. 나는 두 번째를 결코 얻을 수 없었다. 나는 여러 가지 방법을 시도했지만 지금은 붙어있다.

cnt=getEditorContent(); 

CNT는 다음과 같습니다

<img alt="pic1" src="/data/18139/1.jpg" /> 
<img alt="pic2" src="/data/18139/2.jpg" /> 
<img alt="pic3" src="/data/18139/3.jpg" /> 

전체 기능은 다음과 같습니다

function refreshEditorAlt(src,newalt){ 
    var cnt; 
    cnt = getEditorContent(); 

    alert($(cnt).html('img[src="'+src+'"]').attr('alt')); 
    alert($(cnt).find('img[src="'+src+'"]').attr('alt')); 
    setEditorContent(cnt); 
} 

내가 html로 쓸 것을 중요하지 않는 것 같다 (...) 부분을 . 또한 parseHTML을 시도했지만 첫 번째 alt도 가져올 수있었습니다.

누군가 나를 도울 수 있다면 기쁠 것입니다. 나는이 작은 문제에 이미 6 시간이다.

+0

완전한 해결책은 두 가지의 혼합이었다 답변. function refreshEditorAlt (src, newalt) { \t var cnt; \t cnt = getEditorContent(); var newcnt = cnt.replace ($ (cnt) .filter ('img [src = "'+ src + '"]'). attr ('alt'), newalt); \t setEditorContent (newcnt); } Thank You Forum – user3628218

답변

0

시도 사용 필터() 나는 이런 식으로 뭔가가 필요에 따라 할 생각

+0

아마도 당신이 옳을 것입니다. 귀하의 답변은 훨씬 더 상세하지만 단순히 필터를 사용하여 문제를 해결했습니다. 어쨌든이 모든 것은 cnt가 komplex 일 때 작동하지 않습니다. 예 : img가 div에있을 때 – user3628218

1

Here is an example 어떻게 할 수 있습니까? 코드를 다시 변경해야합니다.

function refreshEditorAlt(src,newalt){ 
    var cnt = '<img alt="pic1" src="/data/18139/1.jpg" /><img alt="pic2" src="/data/18139/2.jpg" /><img alt="pic3" src="/data/18139/3.jpg" />'; 
    var $imgToChange = $(cnt).filter(function(){ return this.src.indexOf(src) != -1 }); 
     $imgToChange.attr('alt', newalt); 
    alert($imgToChange.attr('alt')); 
} 

refreshEditorAlt('/data/18139/1.jpg', 'new alt'); 
1

대신) (찾을 :

var cnttest = '<img alt="pic1" src="/data/18139/1.jpg" /><img alt="pic2" src="/data/18139/2.jpg" /><img alt="pic3" src="/data/18139/3.jpg" />'; 

function refreshEditorAlt(src,newalt){ 
    var cnt; 
    cnt = cnttest; 


    var newcnt = cnt.replace($(cnt).html('img[src="'+src+'"]').attr('alt'), newalt); 
    alert(newcnt); 
    //setEditorContent(cnt); 
} 

refreshEditorAlt('/data/18139/1.jpg', 'some new alt'); 

fiddle link