Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery不在纯JavaScript中_Javascript_Jquery - Fatal编程技术网

jQuery不在纯JavaScript中

jQuery不在纯JavaScript中,javascript,jquery,Javascript,Jquery,如何编写以下jQuery而不是 $(".hover").not(".selected"); …在纯JavaScript中?allItems=document.getElementsByTagName('*'); allItems = document.getElementsByTagName('*'); goodItems = []; for(i=0;i<allItems.length;i++){ if( allItems[i].className &&a

如何编写以下jQuery而不是

$(".hover").not(".selected");
…在纯JavaScript中?

allItems=document.getElementsByTagName('*');
allItems = document.getElementsByTagName('*');
goodItems = [];
for(i=0;i<allItems.length;i++){
    if(
        allItems[i].className && 
        (' '+allItems[i].className.replace(/\s+/g, ' ')+' ').indexOf(' '+'hover'+' ') != -1 && 
        (' '+allItems[i].className.replace(/\s+/g, ' ')+' ').indexOf(' '+'selected'+' ') == -1
    )
        goodItems.push(allItems[i]);
}
goodItems=[];
对于(i=0;i,您还可以使用以下函数按类名获取元素

excludeClass
在这里是一个可选参数,如果只定义
includeClass
参数,此函数仍然有效

function getElementsByClassName(includeClass, excludeClass) {
    var elements = []; var el = document.getElementsByTagName('*');
    var regexp1 = new RegExp("\\b" + includeClass + "\\b");
    var regexp2 = new RegExp("\\b" + (excludeClass ? excludeClass : "") + "\\b");
    for (var i = 0; i < el.length; i++) {
        if (regexp1.test(el[i].className) && !regexp2.test(el[i].className)) { elements.push(el[i]); }
    }
    return elements;
}
函数getElementsByClassName(includeClass,excludeClass){
var elements=[];var el=document.getElementsByTagName('*');
var regexp1=新的RegExp(“\\b”+includeClass+”\\b”);
var regexp2=new RegExp(“\\b”+(excludeClass?excludeClass:”)+“\\b”);
对于(变量i=0;i
以下操作将起作用。可以通过使用本机浏览器实现的
GetElementsByCassName()
where present对列表进行优化,将列表筛选为仅包含“hover”类的元素

函数类(el、cssClass){
返回el.className和new RegExp(“(^ |\\s)”+cssClass+”(\\s |$)”).test(el.className);
}
var matchingElements=[];
var-allegements=document.getElementsByTagName(“*”);
对于(var i=0,len=等位基因。长度,el;i
有什么理由不使用jQuery或其他框架吗?因为性能……我们使用raphael Already认识到,jQuery已经得到了相当好的优化,您编写的任何代码都很可能不会更有效率。此外,jQuery已经被打败了,是跨浏览器的,无论您在性能方面获得了什么,都将在ma中失去intainance。我也将Raphael与jQuery一起使用,没有任何问题。我发现最慢的部分是Raphael渲染…@Zack:不完全是。jQuery是一个通用的库,用于创建DOM元素集合并对其执行操作。对于创建DOM元素集合的任何特定任务,使用无库的智能编码特定解决方案都将是可行的当然会更快。
indexOf()
对元素是否具有特定类以及是否会产生误报来说不是一个好的测试。例如,具有
class=“foo\u hover\u bar”
的元素将与此代码匹配。仍然存在一个问题:这在IE<9中不起作用,在IE<9中,数组没有
indexOf()
method.@Alin:这没关系,因为它在正则表达式上没有拆分。它检查类是否在开头或前面紧跟着一个空格字符;该空格字符(如果存在)之前的内容与此无关。检查类结尾的逻辑类似。
function hasClass(el, cssClass) {
    return el.className && new RegExp("(^|\\s)" + cssClass + "(\\s|$)").test(el.className);
}

var matchingElements = [];
var allElements = document.getElementsByTagName("*");
for (var i = 0, len = allElements.length, el; i < len; ++i) {
    el = allElements[i];
    if (hasClass(el, "hover") && !hasClass(el, "selected")) {
        matchingElements.push(el);
    }
}