2012-03-07 43 views
3

这可能是非常简单的事情,但我似乎无法得到这个工作,我不知道为什么。我已经安装了jquery,并且我试图在点击它时获得“this”元素的属性。现在我的代码如下所示:jquery - 使用“this”获取属性

url = $(this).attr("href") 

当我通过单击链接上调用这个函数,它告诉我,VAR“URL”是不确定的。所以很明显,当我点击链接时,它并没有选择“this”。我试图传递一个锚标签的href作为我的变量。

我在看什么?再次,我知道这是非常简单的事情,但我似乎无法弄清楚,所以感谢您花时间帮助我。

谢谢。

<script type="text/javascript"> 
url = "push1"; 

$("a").live("click", function(event) { 
    event.preventDefault();  
    url = $(this).attr("href"); 
}) 
$.ajax({ 
    type: "get", 
    url: "/"+url+".php", 
    data: "", 
    dataType: "html", 
    success: function(html){ 
     jQuery('#Right_Content').hide().html(html).fadeIn(1000); 
    }, 

}) 
; 
</script> 

HTML:

<body> 

<a href="push1" >Image 1</a> 
<a href="push2" >Image 2</a> 

<div id="Right_Content"></div> 

</body> 
+0

我们可以看到其余的代码被调用吗?也许你的一些DOM标记? – Neal 2012-03-07 19:52:34

+0

你是否缺少var定义? – 2012-03-07 19:56:42

+0

添加上面的完整代码。 – user982853 2012-03-07 19:56:43

回答

6

这应该为你

$(function(){  
    $(".link").click(function(){ 
     var url=$(this).attr("href"); 
     alert(url); 
     return false; 

    });  

});​ 

工作假设你有所谓的 “链接” CSS类针对所有锚标签

这里是工作示例:http://jsfiddle.net/L99mM/2/

编辑:按照你的代码张贴在这个问题

你的Ajax调用后,您应该调用了preventDefault。并有右括号应该是Ajax调用

$("a").live("click", function(event) {  
     var targeturl = $(this).attr("href"); 

     $.ajax({ 
       type: "get", 
       url: "/"+targeturl +".php", 
       data: "", 
       dataType: "html", 
       success: function(html){ 
        jQuery('#Right_Content').hide().html(html).fadeIn(1000); 
       } 

      }); // closing for ajax 
     event.preventDefault(); 

    }); // closing for click event binding 
+0

为什么需要jquery对象而不是标准js? 'this.getAttribute(“href”)' – 2018-02-05 08:44:38

0
<script type="text/javascript"> 
var url = "push1"; 

function getContent(){ 
    $.ajax({ 
     type: "get", 
     url: "/"+url+".php", 
     data: "", 
     dataType: "html", 
     success: function(html){ 
     jQuery('#Right_Content').hide().html(html).fadeIn(1000); 
    }); 
} 

$("a").live("click", function(event) { 
    event.preventDefault();  
    url = $(this).attr("href"); 
    getContent(); 
}); 

getContent(); 
</script> 
0

你不需要“这”对于这一点,你需要事件的目标之后:

$("a").live("click", function(event) { 
    event.preventDefault();  
    url = event.target.href; 
}) 

工作小提琴

http://jsfiddle.net/3LvCm/

+0

我在想你可能还没有尝试过?因为在Chromium 17/Ubuntu 11.04中,所有* I *都是错误的:'Object http://fiddle.jshell.net/_display/push1没有方法'attr''。 – 2012-03-07 20:12:47

+0

为什么他不使用'this'?它将引用事件触发的元素。 – 2012-03-07 20:24:12

+0

@DavidThomas - yep注意到在制作小提琴时,编辑 – Evert 2012-03-07 20:26:19