2011-07-28 10 views
1

私は私のウェブサイト上で、次のjQueryを持っている:jQueryのチェックボックス/ターゲット_blank

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

コードは私のページ上のリンクのターゲットを切り替えチェックボックス(新しいタブで開いて確認し、リンク(のためでありますtarget="_blank")、そうでない場合、彼らは同じページで開く

私は2つの問題があります。私はそれがとても特にdivで唯一のリンクはトグルに影響されるようにしたい

  1. を(私は基本的に単に「ドンt w私のメニューの中のantのリンクは、それによって影響を受ける)。
  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()のようなものを代わりに使用し、チェックされたプロパティの値を使用して、必要な値を設定します。 http://jsfiddle.net/UJMgQ/2/

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

が希望の中にあるa「はちょうどaは、いままでのdiv(コンテナ)に#wantedを変更選択されているs」を制限することは、次のように動作します。