2012-03-07 136 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