2

我有一个 ID 为“MyDiv”的 div,我需要该 div 的所有子锚点在新窗口中打开。

我正在努力:

jQuery('#MyDiv.children() a').click(function(){
    jQuery(this).attr('target', '_blank');
});
4

4 回答 4

2

单击此处查看 jsFiddle 示例

$('#MyDiv a').attr ('target', '_blank');

如果您不确定此属性的工作原理,请阅读以下内容:


如果您不喜欢使用target="_blank"(在编写 xHTML 时经常不赞成使用),您可以将单击事件绑定到锚点并使用 javascript/jquery 打开一个新窗口。

比如下面的例子:

单击此处查看 jsFiddle 示例

$('#MyDiv a').click(function(ev) {
  window.open(this.href);
  ev.preventDefault   (); // see post comment by @nbrooks
});
于 2012-07-13T05:04:08.560 回答
1

问题是主选择器。.children()不是 CSS 选择器的有效部分。如果space在 css 选择器中添加 a,则选择器的以下部分将在所有子节点中搜索。如果您只想在直接子节点中搜索,则可以使用>。例如替换#MyDiv.children() a#MyDiv>a

jQuery('#MyDiv>a').click(function(){
    jQuery(this).attr('target', '_blank');
});

或者您可以使用:

jQuery('#MyDiv>a').click(function(oEvent) {
    oEvent.preventDefault();
    window.open($(this).attr('href'), '_blank');
});
于 2012-07-13T05:04:17.820 回答
1

你可以摆脱.children()选择器中的。

标记:

<div id="MyDiv">
    <a href="http://wwww.google.com">1</a>
    <a href="http://wwww.google.com">2</a>
    <a href="http://wwww.google.com">3</a>
    <a href="http://wwww.google.com">4</a>
</div>​

jQuery:

$('#MyDiv a').click(function(){ 
    $(this).attr('target', '_blank'); 
}); ​

jsFiddle 示例

于 2012-07-13T05:07:55.737 回答
0

这可能对你有用

$('#MyDiv a').live('click', function() {
    window.open($(this).attr('href'));
    return false;
});
于 2012-07-13T05:04:39.717 回答