简单JavaScript选择器
使用纯JavaScript而不使用jQuery之类的库,我如何检测变量是否包含DOM类或ID 例如,如果我将一个值传递给函数,该值可能是简单JavaScript选择器,javascript,Javascript,使用纯JavaScript而不使用jQuery之类的库,我如何检测变量是否包含DOM类或ID 例如,如果我将一个值传递给函数,该值可能是 var mySelector = ".class-name"; 或 然后基于mySelector是否持有我将运行的类或ID document.getElementsByClassName 或 如果不使用jQuery之类的库或其他库,那么最好的方法是什么呢?请查看或。它们都可以通过ID或类(以及其他选择器)查找元素。querySelector将返回1个元素,
var mySelector = ".class-name";
或
然后基于mySelector是否持有我将运行的类或ID
document.getElementsByClassName
或
如果不使用jQuery之类的库或其他库,那么最好的方法是什么呢?请查看或。它们都可以通过ID或类(以及其他选择器)查找元素。querySelector将返回1个元素,querySelector将返回所有元素
var mySelector = ".class-name", // "#id-name" will also work fine.
elements = document.querySelectorAll(mySelector);
请注意,这在IE<8中不起作用(请参阅)。polyfill将是添加IE7支持的最佳处理方式。请查看或。它们都可以通过ID或类(以及其他选择器)查找元素。querySelector将返回1个元素,querySelector将返回所有元素
var mySelector = ".class-name", // "#id-name" will also work fine.
elements = document.querySelectorAll(mySelector);
请注意,这在IE<8中不起作用(请参阅)。polyfill将是添加IE7支持的最佳处理方式。您可以使用这个简单的
if/else
语句来区分。这还允许您根据引用的是类还是ID来运行其他代码
var mySelector = ".class-name";
if(mySelector.charAt(0) == ".")
{
document.getElementsByClassName(mySelector.substring(1));
}
else if(mySelector.charAt(0) == "#")
{
document.getElementsById(mySelector.substring(1));
}
您可以使用这个简单的
if/else
语句进行区分。这还允许您根据引用的是类还是ID来运行其他代码
var mySelector = ".class-name";
if(mySelector.charAt(0) == ".")
{
document.getElementsByClassName(mySelector.substring(1));
}
else if(mySelector.charAt(0) == "#")
{
document.getElementsById(mySelector.substring(1));
}
我认为第一种方法是检查笔划的第一个符号。 比如:
var $ = function( string ) {
var result;
switch (string.substr(0,1)) {
case '.': result = document.getElementsByClassName(string); break;
case '#': result = document.getElementById(string); break;
default: result = document.getElementsByTagName(string); break;
}
return result;
}
var mySelector = ".class-name";
console.log( $(mySelector) );
我认为第一种方法是检查笔划的第一个符号。 比如:
var $ = function( string ) {
var result;
switch (string.substr(0,1)) {
case '.': result = document.getElementsByClassName(string); break;
case '#': result = document.getElementById(string); break;
default: result = document.getElementsByTagName(string); break;
}
return result;
}
var mySelector = ".class-name";
console.log( $(mySelector) );
仅仅因为您只需要一个选择器,而不需要整个jQuery库,并不意味着您必须使用自己的选择器。jQuery使用Sizzle选择器引擎,您可以自己轻松地使用它,而无需整个jQuery的开销:
仅仅因为您只需要一个选择器而不需要整个jQuery库,并不意味着您必须自己滚动。jQuery使用Sizzle选择器引擎,您可以自己轻松地使用它,而无需整个jQuery的开销:
我不是高级用户,但不久前我创建了以下小脚本:
var;
__=函数(选择器、过滤器){
"严格使用",;
var反应;
功能筛选(选择器、筛选器){
开关(过滤器){
案例“第一”:
返回选择器[0];
打破
“最后”一案:
返回选择器[selectors.length-1];
打破
违约:
返回选择器[过滤器];
打破
}
}
选择器=选择器.trim();
if(typeof filter==“string”){filter=filter.trim();}
if(selector.indexOf(“”)<0&&selector.indexOf(“”,1)<0&&selector.indexOf(“”,1)<0){
开关(选择器substr(0,1)){
案例“”:
response=document.getElementsByClassName(selector.substr(1));
如果(response.length==1){filter=“first”;}
if(typeof filter!=“未定义”){response=筛选(response,filter)}
打破
案例“#”:
response=document.getElementById(selector.substr(1));
打破
违约:
响应=document.getElementsByTagName(选择器);
如果(response.length==1){filter=“first”;}
if(typeof filter!=“未定义”){response=筛选(response,filter)}
打破
}
}否则{
if(过滤器类型!=“未定义”){
开关(过滤器){
案例“第一”:
响应=document.querySelector(选择器);
打破
“最后”一案:
响应=document.querySelectorAll(选择器);
响应=响应[response.length-1];
打破
违约:
响应=document.querySelectorAll(选择器);
响应=响应[过滤器];
打破
}
}否则{
响应=document.querySelectorAll(选择器);
如果(response.length==1){response=response[0];}
如果(response.length<1){response=false;}
}
}
返回响应;
};
使用起来很简单:
__("div")
或者通过一些过滤器,如:
__("div", "first")
我没有用它做基准测试。我希望它能帮助您。我不是高级用户,但不久前我创建了以下小脚本:
var;
__=函数(选择器、过滤器){
"严格使用",;
var反应;
功能筛选(选择器、筛选器){
开关(过滤器){
案例“第一”:
返回选择器[0];
打破
“最后”一案:
返回选择器[selectors.length-1];
打破
违约:
返回选择器[过滤器];
打破
}
}
选择器=选择器.trim();
if(typeof filter==“string”){filter=filter.trim();}
if(selector.indexOf(“”)<0&&selector.indexOf(“”,1)<0&&selector.indexOf(“”,1)<0){
开关(选择器substr(0,1)){
案例“”:
response=document.getElementsByClassName(selector.substr(1));
如果(response.length==1){filter=“first”;}
if(typeof filter!=“未定义”){response=筛选(response,filter)}
打破
案例“#”:
response=document.getElementById(selector.substr(1));
打破
违约:
响应=document.getElementsByTagName(选择器);
如果(response.length==1){filter=“first”;}
if(typeof filter!=“未定义”){response=筛选(response,filter)}
打破
}
}否则{
if(过滤器类型!=“未定义”){
开关(过滤器){
案例“第一”:
响应=document.querySelector(选择器);
打破
“最后”一案:
响应=document.querySelectorAll(选择器);
响应=响应[response.length-1];
打破
违约:
响应=document.querySelectorAll(选择器);
响应=响应[过滤器];
打破
}
}否则{
响应=document.querySelectorAll(选择器);
如果(回答)。