我是jQuery的新手所以如果问题太基础,请原谅我。
如果我知道类的名称,我知道如何使用相同的类定位两个或更多元素。我的问题是我正在构建的网站中的许多类的名称是动态创建的。所以,我对这些课程的具体名称没有多少控制权。
我想要做的是定位2个元素,当他们拥有相同的类时,即使我不知道该类的名称。< / p>
例如:
<a href="#" class="title25">Some text</a>
<figcaption class="title25">Some text</figcaption>
所以,当这些元素具有相同的类(不管它是什么)做某事时,当他们不做其他事情但没有在我的jQuery中提供类似.title25
的东西时。
答案 0 :(得分:1)
这样的事情:
$("a").each(function(index, element) {
var class = $(element).attr("class");
if(class.length > 2) {
// do something
}
});
未经测试..
答案 1 :(得分:1)
首先获取所有 <?php
// Installer file to create an attribute name "approved" inside Default attribute set
$installer = $this;
$setup = new Mage_Eav_Model_Entity_Setup('core_setup');
$installer->startSetup();
// the attribute added will be displayed under the group/tab Special Attributes in product edit page
$setup->addAttribute('catalog_product', 'approved', array(
'group' => 'Default',
'input' => 'select',
'type' => 'int',
'default' => '0',
'label' => 'Testing',
'backend' => '',
'visible' => 0,
'required' => 0,
'user_defined' => 0,
'searchable' => 0,
'filterable' => 0,
'comparable' => 0,
'visible_on_front' => 0,
'visible_in_advanced_search' => 0,
'is_html_allowed_on_front' => 0,
'global' => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL,
));
$installer->endSetup();
?>
元素,然后为每个元素查找具有相同类的a
figcaption
当然,您可以检查您是否只获得了一个figcaption对应的元素,但我会充分利用你。
答案 2 :(得分:1)
普通JavaScript:
querySelectorAll()
Array.prototype.slice.call()
concat()
className
unshift
(或push
)className
成新阵列findTwin()
findTwin()
title25
和title00
。<强>段强>
var ancs = document.querySelectorAll('a');
var caps = document.querySelectorAll('figcaption');
var aArray = Array.prototype.slice.call(ancs);
var cArray = Array.prototype.slice.call(caps);
var mergedArray = aArray.concat(cArray);
var total = mergedArray.length;
var classArray =[];
for (var i = 0; i < total; i++) {
var aClass = mergedArray[i].className;
classArray.unshift(aClass);
}
var twins = findTwin(classArray);
console.log('matched: ' + twins);
function findTwin(arr) {
var singleArray = [];
var doubleArray = [];
var total = arr.length;
var sorted = {};
while (total--) {
var item = arr[total];
if (!sorted[item]) {
singleArray.unshift(item);
sorted[item] = true;
} else {
doubleArray.unshift(item);
sorted[item] = true;
}
}
return doubleArray;
}
&#13;
<script src="http://gh-canon.github.io/stack-snippet-console/console.min.js"></script>
<a href="#" class="title00">Some text</a>
<figcaption class="title05">Some text</figcaption>
<a href="#" class="title55">Some text</a>
<figcaption class="title27">Some text</figcaption>
<a href="#" class="title28">Some text</a>
<figcaption class="title85">Some text</figcaption>
<a href="#" class="title25">Some text</a>
<figcaption class="title25">Some text</figcaption>
<a href="#" class="title35">Some text</a>
<figcaption class="title00">Some text</figcaption>
<a href="#" class="title45">Some text</a>
<figcaption class="title26">Some text</figcaption>
&#13;
答案 3 :(得分:1)
这可以通过多种方式实现。我会这样做 - 要求页面中使用的所有类型的类。然后在循环中使用它们访问元素会很容易。这对于你真正想要用它们做什么是主观的。
我的代码是:
<a href="#" class="title25">Some text1</a>
<figcaption class="title25">Some text2</figcaption>
<div class="title30">Some text3</div>
<span class="title30">Some text4</span>
<p class="title50">Some text5</p>
<ul class="title50">
<li>Some text6</li>
</ul>
这里的例子用jQuery显示。您还可以使用原始javascript或任何其他框架。
var classes = [];
$('[class]').each(function(){
$($(this).attr('class').split(' ')).each(function() {
if (this.length>0 && $.inArray(this.valueOf(), classes) === -1) {
classes.push(this.valueOf());
}
});
});
console.log(classes);
classes.forEach(function(i){
$('.'+i+':first').attr("style", "color: red;");
$('.'+i+':last').attr("style", "color: green;");
$('DIV.'+i).attr("style", "font-size: 24px;");
$('p.'+i).attr("style", "font-weight: 800;");
$('span.'+i).attr("style", "text-decoration: underline;");
});
JSFiddle Link:https://jsfiddle.net/27g7aayt/1/