2012-05-01 2 views
0

私の6番目のコード行は機能しません。助けてください。

function ajax() { 
    $('a[class="ajax-cw"]').click(function() { 
     $('#cw').load(this + "?ajax"); 
     $('#nav li.current').removeClass('current'); 
     var $base = $("base").attr("href"), 
      $link = this.replace($base, ""); //Line does not work 
     alert ($link); 
     return false; 
    }); 
}; 
+0

質問するときに詳細を入力してください。それはエラーを引き起こすか、何もしないだけですか? 'this'、' $ base'と '$ link'の値は何ですか?あなたは '$ link'で何を得ますか?何を得ることを期待していますか? –

+1

変数はカンマ区切りの値のリストにすることができるので、おそらく問題はありません。 'console.log($ base)'を試して、実際に基本要素のhrefを取得していることを確認してください。また、これはDOM要素ではありません、あなたはそれを置き換えるつもりです、それはあなたが知っている文字列ではありませんか? – adeneo

+0

あなたは何を達成しようとしていますか? 'this.replace'はどうするの? –

答えて

0

これを試してみてください。

this.href.replace($base, ''); 
-1

あなたはセミコロンで前の行を終了する必要があります。コンマで終了しました。

var $base = $("base").attr("href"); 
+1

私はあなたが間違っていると思います。単一の 'var'式で複数の変数をカンマで区切って宣言しても構いません。 –

+0

OK。決してそれを使わなかった。これは、メソッド置換がないハイパーリンクオブジェクトを参照していますが、達成しようとしていたものが明確ではありませんでした。 – PorridgeBear

+0

@PorridgeBear:実際には、コンマを使用して複数の式を適切な状況で区切ることは、完全に適切です。 "絶対に使用しないでください"というのは、ここでの適切なアドバイスではありません。 –

1

あなたはベースオブジェクトのそれと現在クリックされたリンクのhref内容の部品を交換しようとしていた場合、あなたは

var currenthref = $(this).attr('href'); 

経由のhrefコンテンツにアクセスし、その後にcurrenthrefを使用する必要がありますラインを置き換えます。

$link = currenthref.replace($base, ""); 

THREそれはあなたがklickedリンク要素を表す文字列ではなく、オブジェクト(最もlikly jqueryの)ではないので、この上の機能が正常に動作しません交換してください。

+0

私が知る限り、 'this'で参照されるJS DOM要素には、attr()メソッドがありません。 jQueryをラップしてみてください。 – adeneo

+0

ありがとうございました! – adeneo

+0

訂正ありがとうございます;) – csupnig

0

thisは、このタグのhrefではなく、<a />タグです。 $(this).attr('href').replace($base,"")はより良いパフォーマンスを発揮します。

関連する問題