jQuery Checkbox/Target _Blank



我有以下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> 在我的页面上显示复选框(未选中)。当我单击它时,它改变了目标属性,但复选框似乎从未被选中;它仍然显示空盒子。再次单击复选框将按预期删除目标属性。

谢谢。

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

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

要限制所选择的a 's,只需将#wanted更改为a 's想要的div(容器)。

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

对于第二部分:根据toggle()的文档"该实现还在事件上调用。preventdefault(),因此,如果在元素上调用。toggle(),链接将不会被跟踪,按钮将不会被点击。"如果您不想这样做,可以使用.click(),或者在选中的函数中设置$('#newtab').checked为1,在未选中的函数中设置为0。

  1. Try: $('#mydiv').find('a').attr('target', '_blank');
  2. 我认为toggle希望您返回true,使单击事件传播到复选框。不确定,但是在这里检查文档可能是有序的…

没关系,文档说切换可以防止传播。也许可以使用$.change()之类的东西,并使用checked属性的值来设置您想要的值。

最新更新