Javascript jQuery-循环通过div';s从一个链接中提取url,然后将其添加到另一个链接
我需要创建一个函数,从一个链接获取url,并将其应用于同一div中的另一个链接。我可以让它循环,但它总是将最后一个变量分配给所有链接 代码如下:Javascript jQuery-循环通过div';s从一个链接中提取url,然后将其添加到另一个链接,javascript,jquery,url,loops,Javascript,Jquery,Url,Loops,我需要创建一个函数,从一个链接获取url,并将其应用于同一div中的另一个链接。我可以让它循环,但它总是将最后一个变量分配给所有链接 代码如下: $.fn.getLink = function() { $('a.firstlink').each(function(){ var linkHref= $(this).attr('href'); ('a.secondlink').attr('href', linkHref) }); }
$.fn.getLink = function() {
$('a.firstlink').each(function(){
var linkHref= $(this).attr('href');
('a.secondlink').attr('href', linkHref)
});
}
$('div.containing-links').each(function(){
$(this).getLink();
});
谢谢你的帮助
感谢您的快速回答,为了让它简单一点,下面是正确添加链接的代码,但对所有链接重复最后一个href变量:
$('a.firstlink')。每个(函数(){
如何一次将此应用于每个插件?我认为这不是编写插件的好地方。您应该在
.each()循环中直接执行此操作
$('div.containing-links').each(function(){
var $self = $(this),
$first = $self.find('a.firstlink'),
$second = $self.find('a.secondlink');
if( $first.length && $second.length )
$second[0].href = $first[0].href;
});
您的问题是,$('a.secondlink')
获取页面上的所有链接。仅仅因为它位于每个循环中并不意味着它的作用域是任何内容
只需将$('a.secondlink').attr('href',linkHref)
更改为类似于$(this).兄弟姐妹('a.secondlink').attr('href',linkHref)
你能发布有问题的HTML吗。很难达到你的目标。这对我来说不起作用,但我认为你有一个正确的想法,那就是将href应用于所有链接。当我发出警报时(linkHref);它成功地通过了每一个。忽略了这一个,这是正确的答案,尽管有更好的方法在特定上下文中进行搜索$('a.firstLink',this)
您可以将元素搜索的上下文作为jquery selector的第二个参数传递。@Tom,这是一个很好的功能,但因为他是通过链接而不是容器进行循环的,所以不一定可行。@areid我的示例可能不起作用,因为我不知道您的DOM结构,而且链接不是直接的同级链接。概念保持不变,您只需要找出正确的遍历方法来遍历所需的链接(而不是使用.sibles()
方法。)@Stephen这是可行的,因为他正在替换由div容器div.containing-links包装的链接,并在该容器上调用.each()方法来替换每个包装中的这些链接-检查下面我的答案,我已经将你的答案与我相信他所针对的结构上的上下文联系起来。
$('div.containing-links').each(function(){
var $self = $(this),
$first = $self.find('a.firstlink'),
$second = $self.find('a.secondlink');
if( $first.length && $second.length )
$second[0].href = $first[0].href;
});