2012-03-07 15 views
3

これは非常に簡単なことかもしれませんが、私はこれを動作させるようには見えず、なぜわからないのでしょうか。私はjqueryがインストールされていると私はそれをクリックすると、 "この"要素の属性を取得しようとしています。今私のコードは次のようになります。私は、リンクをクリックしてこの関数を呼び出すと、それはVAR「URL」が定義されていないことを私に伝えますJquery - 「this」を使用して属性を取得

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

。だから明らかにリンクをクリックすると「これ」を拾っていません。私は変数として使用するアンカータグの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

+0

var定義がありませんか? –

+0

上記の完全なコードを追加してください。 – user982853

答えて

6

これは、ここで

であるあなたは、 "リンク" と呼ばれるCSSクラスを持つすべてのアンカータグをターゲットにしていると仮定します

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

    });  

});​ 

のために働く必要があります実施例:http://jsfiddle.net/L99mM/2/

編集:質問

に投稿されたあなたのコードを1としてあなたはあなたのAJAX呼び出しの後でpreventDefaultを呼び出す必要があります。そして、閉じ括弧が

$("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 ")' –

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

は、あなたが「これは」このために、あなたはイベントのターゲットを必要とする必要はありませんAJAX呼び出しの後でなければなりませんがあります:

$("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'がありません。 –

+0

なぜ彼は 'this'を使わないのですか?イベントがトリガーされた要素を参照します。 –

+0

@DavidThomas - フィドルを作っている間に編集された – Evert

関連する問題