1

多分それは私が持っていた本当に深夜だったのかもしれませんが、私はこれを理解できません. 最初のhtml:

<div>
<a href="#internal">Internal Link</a>
<a href="http://external.com">External Link</a>
<a href="#internal2">Internal Link2</a>
</div>

リンクに移動する代わりにページで何かを行うには、最初に # が含まれているかどうかに基づいてフィルターする必要があります。[attribute^=value] ソリューションにとっては完璧な問題ですが、これは機能しません...

var link = $(this[href^=#]);

これと属性修飾子を組み合わせる方法に問題があることはわかっています...そして、その後に何を入れればよいかわかりません .val()?!

4

4 に答える 4

1

//以下を使用して、「this」内に「#」で始まるhrefタグを持つすべての子を検索しています

 var links = $('*[href^=#]', this); 
于 2008-11-19T02:41:00.073 に答える
1

あなたが抽出しようとしているのは、リンクの href 属性の内容であり、リンクを含むコンテナーを既に知っていると思います。

あなたが望むものは次のとおりです。

var link = $('a[href^=#]',this).attr('href');

これにより、例では配列 [ '#internal', '#internal2' ] が返されます。linkそれが望ましくない場合は、クエリの後に予想される外観を表示することをお勧めします。

于 2008-11-19T03:23:20.830 に答える
1

私はあなたが正確に何を求めているのか少し混乱しています...

現在のオブジェクトの href 属性の先頭に # があるかどうかをテストする場合:

var link = $(this);
if (link.is("[href^='#']") ...

それ以外の場合は、次のようなことができます。

$('div a[href^="#"]').val("This link starts with a #");
于 2008-11-19T02:13:49.787 に答える
1

申し訳ありませんが、私が言ったように、私は今、深夜からもやの中にいます。簡単な答えは、変数を確立しようとする前に [href^=#] をセレクターに移動することでした。それを大幅に削減したのは私のせいであり、セレクターではなく変数内でフィルター処理しようとした私の混乱した心です...ありがとうございます。これは、私が通常より多くの睡眠をとって自分で解決したであろうことです:

$("div a[href^=#]").click(function() {
  var link = $(this).attr("href");
  ...

ありがとう

ps。私は今日一日中別の問題を解決しようとしていて、それを投稿することを考えていましたが、この後は家に帰って寝て、朝に新鮮に考えようと思います:D

于 2008-11-19T05:49:46.153 に答える