jQuery选择器到JSON对象表示
jQuery selector to JSON object representation
我有兴趣采用jQuery选择器字符串(您放入$()
中的东西)并从字符串中指定的所有元素生成JSON对象。我对从DOM中选择不感兴趣。
这种事情必须在jQuery的底层发生,是否有一个公共函数可以用来实现这一点?有没有提供这个功能的开源库?
给定以下输入字符串:
-
input[class=wood][name=cedar]
-
input[class='wood'][name='cedar']
-
input[class="wood"][name="cedar"]
我想返回以下输出:
{
[
elementType: 'input',
attributes: [
class: 'wood',
name: 'cedar'
]
]
}
并且给定以下字符串:
-
input, div
-
input,div
I'd like:
{
[
elementType: 'input'
],
[
elementType: 'div'
]
}
如果我必须自己写的话,这是一个相当复杂的正则表达式,我宁愿不重新发明轮子:)
当然可以,
var query = $("input, div")
var selector = [];
query.selector.split(',').forEach(function(element){
selector.push({"element": element})
});
console.log(selector)
将给你:
[
{
elementType: 'input'
},
{
elementType: 'div'
}
]
下面是一个工作示例
工作原理:
你可以检查任何jQuery选择器对象,你会发现一个名为selector
的属性。这是查询的字符串表示形式。只需为所需的JSON结构找到正确的解析器,就完成了。
这是元素和属性的支持,jQuery选择器的语法将使这进一步复杂化。
这是一个jsBin的代码在行动的例子。
var main = {}
main.getAttributes = function (selector) {
var attributes = selector.match(/('[[^']]*'])/g)
return _.chain(attributes).map(function (attribute) {
attribute = attribute.match(/'[(.+)']/)[1]
attribute = attribute.split('=')
var key = attribute[0]
var value = attribute[1].replace(/['"]+/g, '', '')
return [key, value]
}).object().value()
}
main.parseSelector = function (selectorStr) {
var selectors = selectorStr.split(',')
return _.map(selectors, function (selector) {
selector = selector.replace(/^'s+|'s$/, '')
return {
'elementType': selector.match(/([^'[']]*)/)[0],
'attributes': main.getAttributes(selector)
}
})
}
var selectorStr = 'input[type=checkbox][class=fun]'
var obj = main.parseSelector(selectorStr)
console.log(obj)
相关文章:
- 文字与原型对象表示法的数据结构
- JavaScript对象表示嵌套对象未定义
- ES6对象简写表示法可以与常规对象表示法相结合吗
- Javascript错误消息,自定义对象表示
- Javascript - 对象表示法脚本与面向对象脚本
- JavaScript对象表示法是正确的JSON吗
- 如何用对象表示法调用内部javascript函数
- 在webpack中创建多个块时,数组表示法和对象表示法之间的区别是什么
- 如何将可为null的json对象表示为单个字符串
- Javascript函数转换为传递变量的对象表示法
- jQuery选择器到JSON对象表示
- HTML输入名称中的Js对象表示法
- 不同Javascript对象表示法的名称
- 这个字符串作为Javascript对象表示什么?
- 使用JavaScript对象表示法访问json值
- 将多层PHP数组转换为Javascript对象表示法
- Javascript对象表示格式
- 图形化地图对象表示网站
- DOM元素的对象表示法
- 使用对象表示法向对象添加方法