2012-05-11 5 views
4

속성에 해당 속성이없는 경우 요소에 속성을 추가하는 방법은 무엇입니까?아직 속성이없는 경우 속성을 추가하십시오.

if (' this does not have class=selected') { 

    $(this).addClass('selected'); 
} 
+1

클래스를 특별히 의미합니까, 아니면 어떤 속성입니까? .addClass()를 원하는만큼 여러 번 호출 할 수 있기 때문입니다. – n8wrl

+0

그러면 복제본이 추가되지 않습니까? – David542

+0

중복인지는 중요하지 않습니다. 요소가 클래스를 가졌지 않거나 그렇지 않습니다. Javascrcipt와 DOM의 관점에서 볼 때 클래스가 두 번 이상 같으면 클래스가 있습니다. –

답변

3

을 찾고 http://api.jquery.com/category/css/

:) 그럼 그냥 가서 추가합니다. 이미 존재하면 두 번 추가되지 않습니다.

$(this).addClass('selected'); // will only add the class if it doesn't exist 

나는이 클래스에 대한 첫 번째 테스트가 더 효율적이지 않을 것이라고 생각합니다.

라이브 데모 :http://jsfiddle.net/2sLd5/

4
if(!$(this).attr('name')) { 
    $(this).attr('name', 'value'); 
} 

그 그것을해야한다.

+0

방금 ​​시도한대로 시도했지만 (! $ (this) .attr ('placeholder')) { $ (this) .attr ('placeholder', 'c'); } –

2

jQuery 문서는 귀하의 친구입니다! 당신이 클래스에 대해 구체적으로 얘기하면 당신은 아마 HasClass

에 대한

http://api.jquery.com/hasClass/

$('#mydiv').hasClass('foo') 
0

당신은 속성없는 선택을 사용할 수 있습니다. 이 수업을하지만, 모든 속성이에 대해 클래스에게 검사를 추가 할 경우 이전에 언급 한 바와 같이 물론

if($('#elemid[class!="myclass"]').length) { 
    $('#elemid').addClass('otherClass'); 
} 

, 그냥 추가에 대한뿐만 아니라 작동합니다. 거기에 아무런 해가 없습니다.

0

클래스를 추가하기 전에 클래스가 이미 있는지 확인하고 확인할 필요가 없습니다. jQuery 소스 (https://github.com/jquery/jquery/blob/master/src/attributes.js)에서 addClass으로 검색하면 클래스가 이미 존재하는 경우 addClass은 아무 작업도 수행하지 않습니다. 따라서 먼저 체크 할 필요가 없습니다.

관련 문제