获取所有父项并将它们存储在字符串中
Get all parent and store them in string
<form class="register">
<div class="form-group">
<input type="submit" value="Signup" class="btn btn-submit" />
</div>
<div class="form-group needAccount" id="req_val">
<a href="#" class="toggleForms">Login from here</a>
</div>
</form>
现在我想遍历这个形式并获取最后一个div#req_val
的所有父级,所以输出应该是一个字符串,即
form.register div.form-group.needAccount#req_val
您可以使用
.parents()
遍历父项并自己生成。请参阅下面的示例实现:
// returns <tag-name>[.<class1>[.<class2>] ...][#<id>] for the passed element
function getSelector(_elem) {
var parts = [_elem.tagName].concat(_elem.className.split(/'s+/).map(function(_class) {
return (_class ? '.' + _class : '');
}));
_elem.id && parts.push('#' + _elem.id);
return parts.join('');
}
var elem = $('#req_val'), parents = elem.parents(), str = [];
parents.each(function() { // add parents
str.unshift(getSelector(this)); // unshift since parents() gives you the nearest parent first
});
str.push(getSelector($('#req_val')[0])); // add self
str = str.join(' '); // join with space
console.log(str);
演示:http://jsfiddle.net/wu41vwuf/
您可以使用
parents()
或.parentsUntil()
(如果您需要停止在表单上)。
由于.parents()
不包括当前元素本身,因此需要将其.add()
到结果集中。然后.map()
遍集合并为集合中的每个元素创建一个字符串。使用 .get()
从 jQuery 集中获取 DOM 元素,然后将它们.join()
为字符串。
在下面的代码片段中,我在form
周围又增加了一个div
,以便您知道.parents()
是如何遍历树的。
片段:
var $parents = $("#req_val").parents().add("#req_val");
var str = $parents.map(function () {
var retVal = this.tagName;
retVal += this.id ? '#' + this.id : '';
retVal += this.className ? '.' + this.className.replace(' ', '.') : '';
return retVal;
}).get().join(' ');
$("#result").text(str);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
<form class="register">
<div class="form-group">
<input type="submit" value="Signup" class="btn btn-submit" />
</div>
<div class="form-group needAccount" id="req_val"> <a href="#" class="toggleForms">Login from here</a>
</div>
</form>
</div>
<hr />
<p id="result"></p>
相关文章:
- 如何有效地将游戏数据存储在URL查询字符串中
- 本地存储中的字符串到字节数组转换
- 推荐在JavaScript中执行存储为字符串的函数,而不是使用eval
- 在字符串中查找所有图像 src URL 并存储在数组中
- 将大数组(字符串和类型数组的混合物)存储到blob或文件中/从blob或文件检索大数组的最佳方式
- 在本地存储中保存并返回随机生成的字符串
- 将属性作为字符串存储在变量中
- javascript将对象数组转换为字符串以存储在s3中
- 在字符串中搜索模式并存储其值
- 我们可以将ng绑定值存储到php字符串中吗
- 将电子邮件验证正则表达式字符串存储在JSON中
- 如何使用String.charCodeAt();一次获取和存储字符串中每个字母的char代码值并存储它们
- 在本地存储器中存储字符串列表
- Javascript-如何通过搜索前几个字母来存储字符串
- 在html输入框中存储字符串数组的值
- 试图比较本地存储字符串与url字符串不工作
- 用JavaScript读取文件并存储字符串值
- JS是否总是为每个字符使用两个字节来存储字符串?
- 如何存储字符串并仅显示其中的一部分
- PHP 存储字符串 JSON 与 JavaScript 不同