我有以下jQuery在我的网站:
$(function() {
$('#newtab').toggle(function() {
$('a').attr('target', '_blank');
},
function() {
$('a').removeAttr('target');
});
});
该代码是用于切换我的页面上链接的目标的复选框(当选中时,链接在新选项卡(target="_blank"
)中打开,否则,它们在同一页面中打开)。
我有两个问题:
- 我想让它,所以只有在一个特定的
div
链接受到影响的切换(我基本上只是不希望链接在我的菜单受到影响)。 - 当单击复选框时,由于某些原因,该复选框永远不会显示。我有
<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。
- Try:
$('#mydiv').find('a').attr('target', '_blank');
- 我认为toggle希望您返回
true
,使单击事件传播到复选框。不确定,但是在这里检查文档可能是有序的…
没关系,文档说切换可以防止传播。也许可以使用$.change()之类的东西,并使用checked属性的值来设置您想要的值。