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/也许你可以包含那个库?如果没有,你的问题的第一部分是相当困难的。

第二部分很简单:

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

If you don't like to include jQuery library for url change. We need following functions

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 ;
        }
    }

}

and call the function

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

or If you are using jQuery library .. use this

(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 回答