jQuery Checkbox / Target _Blank

时间:2011-07-28 01:29:08

标签: javascript jquery html

我的网站上有以下jQuery:

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

代码用于切换我页面上链接目标的复选框(选中时,链接在新标签页(target="_blank")中打开,否则,它们会在同一页面中打开。

我有两个问题:

  1. 我想这样做只有特定div中的链接才会受到切换的影响(我基本上只是不希望菜单中的链接受到影响)。
  2. 单击复选框时,由于某种原因从不显示检查。我的页面上有<input type="checkbox" id="newtab" /><label for="newtab">Open links in new tab</label> ,显示复选框(未选中)。单击它时,它会更改目标属性,但似乎永远不会选中该复选框;它仍然显示空盒子。再次单击该复选框将按预期删除目标属性。
  3. 感谢。

3 个答案:

答案 0 :(得分:1)

这可以解决您的问题:http://jsfiddle.net/UJMgQ/2/

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

要限制所选的a,只需将#wanted更改为div(容器)所需的a。它就像一个css选择器。

答案 1 :(得分:0)

对于第1部分:$('.divYouWant a').attr(...)将限制它,就像CSS选择器一样。

对于第2部分:根据toggle()的文档“该实现还对事件调用.preventDefault(),因此如果在调用了.toggle()的情况下,将不会遵循链接并且不会单击按钮元件。”。如果你不想这样,可以使用.click(),或者只在所选函数中将$('#newtab').checked设置为1,为未选择的函数设置为0。

答案 2 :(得分:0)

  1. 尝试:$('#mydiv').find('a').attr('target', '_blank');
  2. 我认为切换要求您返回true以使点击事件传播到复选框。不确定,但在这里检查文档可能是有条理的......
  3. 没关系,docs说切换会阻止传播。也许使用类似$ .change()的东西,并使用checked属性的值来设置你想要的值。