我的网站上有以下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>
,显示复选框(未选中)。单击它时,它会更改目标属性,但似乎永远不会选中该复选框;它仍然显示空盒子。再次单击该复选框将按预期删除目标属性。感谢。
答案 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)
$('#mydiv').find('a').attr('target', '_blank');
true
以使点击事件传播到复选框。不确定,但在这里检查文档可能是有条理的...... 没关系,docs说切换会阻止传播。也许使用类似$ .change()的东西,并使用checked属性的值来设置你想要的值。