当前位置: 首页 > 知识库问答 >
问题:

解耦嘶嘶声。jQuery中的js,并将其替换为Sel。js公司

云和硕
2023-03-14

我最近遇到了Sel。js,除其他外,它支持草稿CSS级别4选择器(例如主题选择器,它允许您以匹配CSS节点的父节点为目标)。

我很想开始与jQuery结合使用这个库,并且很好奇是否有人有经验(或者对如何完成有很好的猜测)将jQuery基于的Sizzle.js选择器库替换为不同的选择器库(在这种情况下是Sel.js)。

有什么想法或示例可以在网络上某个地方查看,以将jQuery与Sizzle解耦,并使其依赖于不同的选择器引擎?

共有1个答案

拓拔君博
2023-03-14

这本身并不一定是真正的替代,而是一种倒退。Sizzle在遇到它认为“无效语法”时会抛出一个错误,例如CSS4主题选择器(div!

> Uncaught Error: Syntax error, unrecognized expression: div! > .jquery-css4

一种解决方案是捕获{}Sizzle抛出的那些错误,然后尝试返回到Sel.js进行选择,方法是覆盖$()函数,如下所示:

$ = function (selector, context) {
    try {
        return jQuery(selector, context);
    } catch (e) {
        return jQuery(sel.sel(selector, context));
    }
};

以这种方式重写后,您可以使用:

$('div! > .jquery-css4');

...将正确返回<代码>

另一种选择是,您可以创建一个简单的css4选择插件,使用如下内容:

$.css4 = function(selector, context) { 
    return $(sel.sel(selector, context));
};

此时可以重新写入上述内容:

$.css4('div! > .jquery-css4');

这种方法的好处是它不依赖于错误处理,并且更具声明性。本质上,您应该知道何时使用CSS4选择器,何时需要额外的支持,何时不需要。然而,这两种方法都相当不具侵入性。

但是,对于使用这些方法的任何人,请注意:我还没有对使用上下文参数的查询进行广泛测试。它可能不适合Sel.js-因此,如果您需要进一步执行该步骤,请注意您可能需要进一步增强此代码。

下面是一个正在运行的JSFIDLE,它显示了正在运行的代码。

 类似资料:
  • 您好,我正在尝试解决目标C中的一个嘶嘶声测试(有一个转折),该测试按顺序列出从1到60的数字(每一个都在新行上),但当数字可被6整除时,程序应显示“嘶嘶声”,当数字可被10整除时,程序应显示“嘶嘶声”;如果这个数字可以被6和10整除,那么它应该显示“Fizzbuzz”。 这是我的密码。有谁能帮我让它工作吗(这会让一个代码高尔夫球手点头表示赞同):inti=60;整数乘数=0;新阵列阵列阵列阵列阵列

  • 问题内容: 我的应用程序创建了一个JavaScript对象,如下所示: 但是我需要将此对象作为数组。 因此,我尝试通过遍历该对象并将该元素添加到数组来将该对象转换为数组: 有没有更好的方法将对象转换为数组或函数? 问题答案: 输出:

  • 我的Androidanifest.xml文件是这样的 我正在使用build。渐变版 build.gradle(APP)文件是这样的 但是它总是显示这个警告在Androidanifest.xml文件,如何解决这个警告? 问题: > 警告是关于什么的? 我该怎么修?

  • 怎么替换成红色的值 对象可能有多个

  • 我试图检查JWT令牌的到期日,我所做的一切都没有给我正确的日期。 我试过那些libs,但没有成功... https://github.com/auth0/angular2-jwt/blob/master/src/jwthelper.service.ts 以下是完整的令牌: https://jwt.io/正在解码令牌,并且显示的exp正确。 如何从token获取真实日期。经验?

  • 我想用相邻列中的值替换一列中的空值,例如,如果我 我希望它是: 尝试过 但没有工作,它说值应该是浮点数、int、长、字符串或判决 有什么想法吗?