2013-06-26 2 views
0

그래서 ngg-navigation 클래스가있는 div가 있습니다. HTML을 직접 만질 수 없기 때문에 jQuery를 사용하여 ID를 추가해야했습니다. 여기에 내가 가진 무엇 : 이것은 초기로드에서 잘 작동하지만 ngg-navigation-id ID의 실종의 결과로, AJAX을 수행하고 사업부를 새로 다른 자바 스크립트가있다jQuery : 새로 생성 된 DOM 요소에 ID를 추가하십시오.

jQuery(function($){ 
     $('.ngg-navigation').attr('id', 'ngg-navigation-id'); 
    }); 

. ID가 나타날 때마다 ID를 추가하는 방법이 있습니까?

+2

왜 ID를 추가해야합니까? – lonesomeday

+1

유일한 방법은 요소가 다시 추가 될 때마다이 행을 다시 실행하는 것입니다. 참고 : 하나의'$ ('.ngg-navigation') 요소 만 있습니까? 그렇다면 ID를 부여하는 이유는 무엇입니까? 그렇지 않은 경우 ID가 ** 고유 ** **인지 확인하십시오. 여러 요소 *는 동일한 ID를 가질 수 없습니다. –

+3

왜 ID가 필요한 이유가 무엇입니까? 분명히 클래스는이 요소를 강타하기에 충분히 구체적입니다. 왜 ID를 부여 할까? – prodigitalson

답변

2

의견에서 ID를 추가하려는 유일한 이유는 CSS 특수성 때문입니다.

ID가 필요하지 않은 경우 CSS 선택기를보다 구체적으로 지정하면됩니다. 대신 일을

:

.ngg-navigation{ 
} 

시도는 전에 부모를 추가하여 그보다 구체적으로 확인합니다. 좋아요 :

0

div를 새로 고칠 때마다 바꾸기 작업을 수행하는 코드를 추가 할 수 있습니다.

1

그냥 함수로 그를 켜고 당신이 필요할 때마다 호출 : Ajax 호출에서, 콜백을

function setId(){ 
    $('.ngg-navigation').attr('id', 'ngg-navigation-id'); 

    // you may want to consider this, as its faster: 
    // $('.ngg-navigation)[0].id = 'ngg-navigation-id'; 
} 

(당신이하고있는대로) 당신은 페이지로드를 호출 할 때를 고양이 기절 ... 뭐든간에.

$(function(){ 
    setId(); 

    $.ajax({ 
     ... 
     success:function(){ 
      setId(); 
     } 
    }); 
}); 

이 또한 그렇지 않으면 당신은 잘못된 HTML을해야합니다, 당신은 단지 클래스 ngg-navigation 단일 요소가 있다고 가정합니다.

function setId($item,newID){ 
    $item.attr('id',newID); 

    // or the faster alternative: 
    // $item[0].id = newID; 
} 

그리고 전화 :

당신은 또한 좀 더 재사용하고 매개 변수로 만들 수 있습니다

setId($('.ngg-navigation'),'ngg-navigation-id'); 

당신이 다른 jQuery를 개체/ID 쌍에 전달할 수있는이 방법을과 당신을 위해 당신의 신분증을 설정할 것입니다. 생각을위한 음식.

0

다른 사람들이 언급했듯이, id는 클래스 이름으로 요소를 참조 할 수 있으므로 불필요한 것처럼 보입니다. 아마도이 클래스의 첫 번째 또는 유일한 요소 일 것입니다. 항상 다음과 같이 참조 할 수 있습니다.

$('.ngg-navigation').first() 

이 요소로 작업해야 할 때마다 언제나 id를 추가 할 수 있습니다.

원하는 경우 jQuery ajaxComplete을 조사하여 Ajax 요청이 완료 될 때 호출 할 처리기를 등록 할 수 있습니다.

최근 코멘트를 바탕으로 css를 재정의해야 할 경우 jQuery를 사용하여 필요한 규칙을 설정할 수 있습니다. 이것은 현재의 CSS를 오버라이드 (override)합니다.

0

다른 DIV를 감싸고이 부모 DIV에 ID를 적용 할 수 있습니다.

어린이 DIV는 변경할 수 있으며 여전히 $ ('# yourID'). find ('.ngg-navigation')을 사용하여 찾을 수 있습니다.

이 방법은 확실하지 않지만 잘 작동해야합니다.

관련 문제