如何区分 jQuery 选择器字符串和其他字符串

2023-12-25

我想检查字符串的“类型”。特别是,如何区分 jQuery 选择器字符串和其他字符串?也就是说,下面的代码中selectorTest应该如何实现呢?

    var stringType = function( value ) {   
        var htmlExpr = /^[^<]*(<[\w\W]+>)[^>]*$/;

        if ( htmlExpr.test(value) ) {
            return "htmlstring";
        }
        if ( selectorTest ) {
            return "selectorstring";  
        }
        return "string";
    }

You can 做 jQuery 所做的事情 https://github.com/jquery/jquery/blob/master/src/core.js#L104内部并检查它是否是 HTML以下正则表达式 https://github.com/jquery/jquery/blob/master/src/core.js#L20:

/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]+)$)/

e.g.:

var stringType = function( value ) {   
    var htmlExpr = /^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]+)$)/;

    if ( htmlExpr.test(value) ) {
        return "htmlstring";
    }
    if ( selectorTest ) {
        return "selectorstring";  
    }
    return "string";
}

请注意,在最新版本的 jQuery 中,还有另一张支票 https://github.com/jquery/jquery/blob/master/src/core.js#L99明确表示“从<” 和 “ 结尾为>" 跳过正则表达式(纯粹是为了速度)。支票看起来像这样 https://github.com/jquery/jquery/blob/master/src/core.js#L99在核心中(从 jQuery 1.6.1 开始):

if ( typeof selector === "string" ) {
    // Are we dealing with HTML string or an ID?
    if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) {
        // Assume that strings that start and end with <> are HTML and skip the regex check
        match = [ null, selector, null ];
    } else {
        match = quickExpr.exec( selector );
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何区分 jQuery 选择器字符串和其他字符串 的相关文章

  • 区分单击与 mousedown/mouseup

    我已经阅读了有关这种情况的 stackoverflow 上的几个答案 但没有一个解决方案有效 我尝试根据用户是否单击某个元素或使用 jQuery 将鼠标按住该元素来执行不同的操作 有可能做到这一点吗 onMouseDown 将在按下左侧或右
  • Blueimp jQuery 文件上传,传递额外的表单数据

    我可以使用一些帮助 我已经设法使 blueimp jQuery 文件上传为我工作 但我仍然绝对是一个新手 我对 jQuery 等知之甚少 所以请尝试将其清晰明了地提供给我尽可能简单 我会尝试具体一点 好的 我想实现的是人们可以上传照片 并为
  • Bootstrap:下拉菜单无法通过 jQuery 单击打开

    我正在创建一个包含多行的表 所有行都有一个 选项 按钮 该按钮应该显示下拉上下文菜单 为了使代码更短 我使用了一个div以便将其重用为上下文菜单的通用标记 我正在使用 Bootstrap 5 1 3 和 jQuery 3 6 0 以下是我的
  • 如何用 jQuery 替换击键?

    我需要能够用 jQuery 替换击键 当按下右箭头时 我希望改为按下 Tab 键 到目前为止我有
  • Rails 4 - 带有 dependent-fields-rails 的条件 JS

    我正在尝试弄清楚如何在我的 Rails 4 应用程序中使用 dependent fields rails gem 我迷路了 我已将 underscore js 包含在我的供应商 javascripts 文件夹中 并更新了我的 applica
  • 加载 Ember.View 的内容后初始化 jQuery 插件

    DEBUG Ember VERSION 1 0 0 rc 6 ember js DEBUG Handlebars VERSION 1 0 0 rc 4 ember js DEBUG jQuery VERSION 1 9 1 控制器是一个Em
  • 全屏 API:会触发哪些事件?

    我需要知道当用户通过新的进入全屏模式时会触发哪些 DOM 事件全屏API https developer mozilla org en DOM Using full screen mode 我尝试了这个片段 但它没有触发 jQuery bo
  • jQuery - 检测鼠标是否静止?

    我想知道是否有一种方法可以检测 jQuery 中鼠标是否空闲了 3 秒 是否有我不知道的插件 因为我不相信有一个原生的 jQuery 方法 任何帮助将非常感激 您可以收听mousemove事件 每当发生时启动超时并取消任何现有超时 var
  • Angular 完成渲染后运行 jQuery

    我正在尝试使用 angularjs 中的 json 对象填充个人资料页面 我正在为此使用指令 我有一个配置文件指令 其中包含配置文件部分指令作为子项 配置文件部分具有作为子级的配置文件子部分指令 我需要在 Angular 开始编译之前和 A
  • 每个父元素上每个第一个元素的 jQuery 选择器

    我有一个像这样的 HTML div class container span class iconset span span class iconset span div div class container span class ico
  • 如何对 bootstrap-3 分页进行编程以处理简单的 HTML 内容

    我正在 新闻 部分工作 并尝试使用 jquery 使 bootstrap 3 分页工作 分页的 HTML
  • 我如何使用 jQuery 来 ajaxify 表单?

    我正在尝试在不使用 jQuery 插件的情况下 AJAXIFY 表单 实现这一目标的过程是什么 我有我的表格 我应该将操作设置为什么 标题脚本应该是什么 请记住 我不想使用任何插件 我只需要一个使用 jquery ajaxifying 表单
  • 智能位置表单字段

    我的用户注册表单上有一个文本字段location 我本质上希望这个字段能够根据 Google 地图 或同等地图 进行验证 只允许有效位置通过 最好采用类似的格式滑铁卢 伦敦 or 伦敦 英国 要求 除了位置名称之外 我还想返回该位置中心的坐
  • 通过搜索查找下一个文本并突出显示不起作用

    当在搜索框中搜索任何文本时 它可以找到并突出显示正确的文本 但是当搜索下一个 新文本时 它无法找到下一个 新文本 再次搜索时它不起作用 我无法找到问题 这JS below JS button search click function va
  • 有什么方法可以在不重新加载的情况下更改标头 URL? [复制]

    这个问题在这里已经有答案了 可能的重复 修改URL而不重新加载页面 https stackoverflow com questions 824349 modify the url without reloading the page 使用新
  • 使用 jQuery 拖放

    我想使用 jQuery 进行简单的拖放操作 到目前为止我还没有做任何事情 但之前的尝试都没有成功 你有没有尝试过jQuery UI 可拖动 http jqueryui com demos draggable 简单用例 div class u
  • JQuery 可排序嵌套可排序 div

    这个问题与这个有关Nest jQuery UI 可排序 https stackoverflow com questions 19129476 nest jquery ui sortables 但我无法解决我的问题 问题是 我有一个包含项目的
  • 使用 jQuery 的 javascript 关联数组长度

    我正在使用 javascript 关联数组 例如 var testarray testarray one 1 testarray two 2 testarray three 3 我也在旁边使用jquery 如何使用 jquery 或任何其他
  • 如何在 jQueryUI 工具提示中换行

    新版本的 jQueryUI 1 9 附带了本机工具提示小部件 经过测试 如果内容 标题属性的值 很短 它就可以正常工作 但如果内容很长 工具提示一旦显示就会与输入文本重叠 有a demo http jqueryui com tooltip
  • 如何禁用 TinyMCE 文本区域

    我已经尝试了以下所有方法 tbxNote attr disabled disabled doesn t work tbxNote attr disabled true doesn t work either tinyMCE init mod

随机推荐