2011-07-28 4 views
1

나는 내 웹 사이트에 다음과 같은 jQuery를 가지고 :이 옵션을 선택하면jQuery를 체크 박스/대상 _blank

$(function() { 
$('#newtab').toggle(function() { 
    $('a').attr('target', '_blank'); 
}, 
function() { 
    $('a').removeAttr('target'); 
}); 
}); 

코드 내 페이지에 링크의 대상을 전환 체크 박스입니다 (새 탭에서 열기 (target="_blank")은, 그렇지 않으면 그들은 같은 페이지에서 열

나는 두 가지 문제가 있습니다.

나는 그것이 특정 div 너무에만 링크가 토글에 의해 영향을 만들고 싶어
  1. (나는 본질적으로 '돈을 t w 개미 링크가 내 메뉴에서 영향을받습니다).
  2. 확인란을 클릭하면 어떤 이유로 든 수표가 표시되지 않습니다. 내 페이지에 체크 박스 (선택 취소)가 표시된 <input type="checkbox" id="newtab" /><label for="newtab">Open links in new tab</label> 이 있습니다. 클릭하면 대상 속성이 변경되지만 확인란이 선택되지 않은 것 같습니다. 그것은 여전히 ​​빈 상자를 보여줍니다. 확인란을 다시 클릭하면 대상 속성이 예상대로 제거됩니다.

감사합니다.

답변

1

이 문제를 해결해야한다. CSS 선택기.

+0

고마워요. 이것은 내가 필요한 것입니다. – Christopher

0

1 부 : $('.divYouWant a').attr(...)은 CSS 선택기와 마찬가지로 제한됩니다.

2 부 : toggle()의 문서에 따르면 구현시 이벤트에서 .preventDefault()도 호출되므로 .toggle()을 호출하면 링크가 따라 가지 않고 버튼이 클릭되지 않습니다. 요소. " 원하지 않는 경우 .click()을 사용하거나 $('#newtab').checked을 선택한 함수에서 1로 설정하고 선택되지 않은 함수는 0으로 설정하십시오.

+0

여기에'toggle()'문서가 있습니다. http://api.jquery.com/toggle-event/ – Sajid

0
  1. 시도 : $('#mydiv').find('a').attr('target', '_blank');
  2. 내가 토글 당신이 클릭 이벤트가 체크 박스에 전파하기 위해 true을 반환하고 싶은 생각합니다. 확실하지는 않지만 문서를 확인하는 것이 여기에 있습니다 ...

토글은 전파를 방지한다고 말합니다. 아마도 대신 $ .change()를 사용하고 checked 속성의 값을 사용하여 원하는 값을 설정하십시오. http://jsfiddle.net/UJMgQ/2/

$(function() { 
    $('#newtab').click(function() { 
     if ($(this).is(':checked')) { 
      $('#wanted a').attr('target', '_blank'); 
     } else { 
      $('#wanted a').removeAttr('target'); 
     } 
    }); 
}); 

당신이 원하는 S에있는 a '의 단지 a 무엇 이제까지 div (컨테이너)에 #wanted을 변경 선택 s'을 제한하려면 그것은 다음과 같이 작동합니다

관련 문제