2

私はjQueryを少し知っていますが、それでもjavascriptですが、次のコードを純粋なJavascriptに変換する方法がわかりません。

$('#breadcrumbs .category[href="http://asksomeone.co.za/category/products"]')
    .attr('href','http://myurl.com/803-2');

どうすればいいですか?

私がこれを行っている理由は、Wordpressテーマを使用しているためです... jQueryライブラリを含めると、サイトで多くのことが壊れます。jqueryライブラリを含めないと、jqueryコードが実行されません...

4

5 に答える 5

2

Internet Explorer 7のサポートを終了する場合は、次のことができます。

var i, elems = document.querySelectorAll('#breadcrumbs .category[href="http://asksomeone.co.za/category/products"]');

for (i = 0; i < elems.length; i++) {
   elems[i].href = 'http://myurl.com/803-2';
}

それ以外の場合は、ライブラリを使用する方がよいと思います。

于 2013-03-17T16:34:27.007 に答える
2

他の人が述べているように、ライブラリの競合を解決しようとするだけかもしれません。

あなたの質問に答えるために、ここに可能性があります:

var elements = document
    .getElementById('breadcrumbs')
    .getElementsByClassName('category'); //Not supported below IE9 :-(

for (var i = 0; i < elements.length; i++) {
    if (elements[i].href == "http://asksomeone.co.za/category/products") {
        elements[i].setAttribute('href', "http://myurl.com/803-2");
    }
}
于 2013-03-17T16:42:27.280 に答える
1

jQueryのセレクターはsizzleに基づいています:http ://sizzlejs.com/多分あなたはそのライブラリを含めることができますか?そうでなければ、あなたの問題の最初の部分は非常に難しいです。

2番目の部分は簡単です:

myElement.setAttribute('href','http://myurl.com/803-2');
于 2013-03-17T16:31:09.057 に答える
1

$はjQueryの単なるエイリアスです。あなたはただ使うことができます:

jQuery('#breadcrumbs .category[href="http://asksomeone.co.za/category/products"]').attr('href','http://myurl.com/803-2');

または、次のようにjQueryを渡す自己実行関数でコードをラップします。

(function($){
     $('#breadcrumbs .category[href="http://asksomeone.co.za/category/products"]').attr('href','http://myurl.com/803-2');
})(jQuery);

本当に純粋なjsルートをたどりたい場合は、以下を見てください。

document.getElementById()

element.setAttribute()
于 2013-03-17T16:38:01.440 に答える
0

URL変更用のjQueryライブラリを含めたくない場合。以下の機能が必要です

function getByClassName( className , selector ) {
    selector = selector || document;

    if( selector.getElementsByClassName ) {
        return selector.getElementsByClassName( className );
    }

    var els = [];

    var childs = selector.getElementsByTagName( '*' );

    for( var i = 0, j = childs.length; i < j; i++ ) {
        if( childs[i].className.indexOf( className ) > -1 ) {
            els.push( childs[i] );
        }
    }
    return els;
};

function changeUrl( els ,  url , newUrl  ){

    for( var i = 0; i < els.length ; i++ ){

        if ( els[i].href == url ) {
                els[i].href = newUrl ;
        }
    }

}

関数を呼び出します

changeUrl ( 
  getByClassName( 'category' , document.getElementById('breadcrumbs')  ) , 
  "http://asksomeone.co.za/category/products" , 
  "http://myurl.com/803-2"
);

またはjQueryライブラリを使用している場合..これを使用します

(function( JQ ){

    JQ('#breadcrumbs .category[href="'
        + 'http://asksomeone.co.za/category/products"]')
       .attr('href',"http://myurl.com/803-2");

})( jQuery );
于 2013-03-17T17:05:54.847 に答える