2012-07-09 111 views
0

我有以下jQuery代码似乎没有做任何事情。点击链接时,我试图将其url属性的值复制到iframesrc属性中。使用jQuery将属性从一个元素复制到另一个元素

基本上这应该是让链接在iframe中打开(iframe的内容在每次单击新链接时被替换)而不是像正常链接那样操作。

那么我的代码有什么问题?

$('p.tweet a').click(function(){ 
    var link = $(this).attr('url'); 
    $('iframe').attr('src',link); 
}) 
+0

什么的'url'属性?你的意思是'href',据推测..?而且,顺便说一下,'var link = this.href;'的工作方式也一样好,速度稍快。 – 2012-07-09 22:28:45

回答

5

那么,什么是错我的代码?

你是不是从你订阅的,因此不会离开你的脚本来执行之前的浏览器简单地重定向从该页面离开任何机会锚的点击处理程序返回false取消默认操作

$('p.tweet a').click(function() { 
    var link = $(this).attr('href'); 
    $('iframe').attr('src', link); 
    return false; 
}); 

并顺便提醒我已经使用$(this).attr('href')而不是$(this).attr('url')。标准HTML中的href属性对于定位比属性url更常见,但是如果您已经发明了一些标记,其中锚点具有url属性,那么您可以对其进行旋转。

+0

今天就派上用场了。感谢分享! – blackhawk 2015-07-24 22:29:01

5

也许你可能想要得到href属性(甚至阻止默认动作)

$('p.tweet a').click(function(ev){ 
    ev.preventDefault(); 
    var link = this.href; // no need to call the $ function 
    $('iframe').attr('src',link); 
}) 
+0

美丽。不知道'preventDefault()' - 谢谢! – 2012-07-09 22:44:40

0

超链接的URL包含在href属性中,而不包含url属性。

你也应该防止默认操作,使您的代码如下所示:

$('p.tweet a').click(function(event){ 
    var link = $(this).attr('url'); 
    $('iframe').attr('src',link); 
    // cancel default event 
    event.preventDefault(); 
}); 
+0

我知道,我将这个值存储在一个虚假的属性中,直到它可以被复制到iframe中。 – 2012-07-09 22:31:49

+1

你可能想要使用'data-'标签和'data()'函数。 '$(this).data('url');' – dcpomero 2012-07-09 22:35:07

+0

@SamNabi - 所以我认为这个问题并没有取消默认事件,并且你都设置了,然后(更新答案,尽管它不是很有用,因为已经有了两个答案说话的事情)?另外,dcpomero是正确的 - 添加一个不带'data-'前缀的自定义属性是无效的HTML(它仍然可以正常工作,所以它不是一个大问题)。 – jeff 2012-07-09 22:40:02

相关问题