2017-03-20 20 views
0

私は古い学校のアプリケーションで作業しています。それはとても古いので、jqueryをサポートしていません。ほとんどの場合、どちらがうまくいくのですか?しかし、私は地獄に迷惑をかけています。Jqueryをjavascriptに変換する(find())

http属性で変更できるように、「Novedades」という単語を含むリンクを選択する必要があります。私はこれを別のやり方でやって欲しいと思っていますが、CMSは私が向きを変えるたびにすべてを変えています。 :)私はこのシステムが大好きだと教えてくれますか?

通常、これはJqueryで書く方法です。十分に簡単ですが、どのように私は普通のjavascriptに見つけることができますか?

var blog = $('.navbar-nav').find('a:contains(Novedades)'); 

ので、明らかにこれは、任意の助けをいただければ幸いです

var blog = document.getElementsByClassName("navbar-nav") 

で始まります! :)

+1

の選択はアイデア未満です。しかし、それ以外の方法がない場合は、 '.navbar-nav a''要素を取得するために' document.querySelectorAll() 'を1つのセレクタとともに使用し、' .textContent'をテストしてフィルタリングします。各要素。 –

+0

@squintええ、テキストを選択するのは好きではありませんが、これはひどいシステムです。あなたがどこでそれをやっているのか分かりません。 document.querySelectorAll( 'navbar-nav a')のようなもの。textContent( 'Novedades')? – zazvorniki

+0

ほぼ'querySelectorAll'メソッドはコレクションを返します。最も簡単で最も広く互換性のある方法は、 'for'ループを使ってコレクションを反復し、個々の要素の' .textContent'プロパティをチェックしてから、ループ内で 'href'を実行します。 –

答えて

1

目を細めさんのコメント上に構築、あなたがそれらを介して古い学校やループを取得する必要があります:テキストの内容に基づいて

var blog = document.querySelectorAll(".navbar-nav a"); 
for (var i=0;i<blog.length;i++){ 
    var thisBlog = blog[i]; 
    var txt = thisBlog.textContent.toLowerCase(); 
    if (txt.indexOf('novedades') > -1){ 
     //do your thing 
    } 
} 
+0

一見使い勝手の良い変数がなければ、それほど冗長ではないかもしれませんが、良く見えます。 ':contains()'をエミュレートする場合、大文字と小文字を区別する必要があります。 'if(blog [i] .textContent.indexOf( 'Novedades')> -1){' –

+1

Gotchaは、明確にするために故意に冗長であった。 –

+0

ありがとうございました!あなたは私の頭を机の上から叩いて救った! – zazvorniki