Jquery 每到 <a> 只给我 href
Jquery each through <a> gives me href only
我有一个简单的菜单
<div class="nav-container desktop">
<a href="_index.php?page=_sub_papa&main=klassen">One</a>
<a href="_index.php?page=_sub_papa&main=tw">Twp</a>
</div>
我用 jQuery 遍历这个,然后用完整的 <a.../a>
.
创建 <li>
标签
$.each( $('.nav-container>a'), function(i, item){
var menupunkt = '<li>' + item + '</li>'
console.log(i, menupunkt);
});
示例:http://codepen.io/anon/pen/bwbgap, https://jsfiddle.net/86g44ssp/
在我的控制台中,我只看到以下内容
<li>http://xyz.ccom/_index.php?page=_sub_papa&main=tw</li>"
为什么我没有得到整个 a?因为当我只打印 "item" 时,我得到了整个 <a.../a>
$.each( $('.nav-container>a'), function(i, item){
var menupunkt = '<li>' + $(item).text() + '</li>'
console.log(i, menupunkt);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="nav-container desktop">
<a href="_index.php?page=_sub_papa&main=klassen">One</a>
<a href="_index.php?page=_sub_papa&main=tw">Twp</a>
</div>
我相信你想访问 outerHTML。我已经包含了另一个 SO 答案的代码:
jQuery, get html of a whole element
https://jsfiddle.net/86g44ssp/1/
我所做的更改在这里:
jQuery.fn.outerHTML = function() {
return jQuery('<div />').append(this.eq(0).clone()).html();
};
... other code here ...
var menupunkt = '<li>' + $(item).outerHTML() + '</li>'
$( ".nav-container a" ).wrap( "<li></li>" );
这是将 .nav-container a 包裹在列表元素中的最快方法。
虽然循环 $.each('.nav-container a', function(i,v) {});
每个 <a>
都像对象 NOT at TEXT
如果您想要定位特定元素,请使用:
$.each('.nav-container a', function(i,v) {
var fullObject = $(this).html(),
link = $(this).attr('href'),
text = $(this).text();
});
item
或 this
代表一个 DOM 元素。当您将其视为字符串时,您将其转换为字符串。您可以使用 item.outerHTML
- 您要查找的字符串 - 代替 item
.
$.each( $('.nav-container>a'), function(i, item){
var menupunkt = '<li>' + item.outerHTML + '</li>'
console.log(i, menupunkt);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="nav-container desktop">
<a href="_index.php?page=_sub_papa&main=klassen">One</a>
<a href="_index.php?page=_sub_papa&main=tw">Twp</a>
</div>
注意
不确定它是否有优势,但我更喜欢:
$('.nav-container>a').each(function(i, item){
var menupunkt = '<li>' + item.outerHTML + '</li>'
console.log(i, menupunkt);
});
我已经更新了your fiddle,你只需要更改
var menupunkt = '<li>' + item + '</li>'
到
var menupunkt = '<li>' + item.outerHTML + '</li>'
并且无需添加额外的包装或其他东西,只需从外部HTML 获取 HTML 就大功告成了!
这是类型转换造成的。当您执行 '<li>' + item + '</li>'
时,JavaScript 运行时将尝试将 item
转换为字符串。这是通过调用 item
上的 toString()
方法完成的 "under the hood",例如item.toString()
。您可以通过显式执行强制类型转换:
console.log(i, item.toString());
我有一个简单的菜单
<div class="nav-container desktop">
<a href="_index.php?page=_sub_papa&main=klassen">One</a>
<a href="_index.php?page=_sub_papa&main=tw">Twp</a>
</div>
我用 jQuery 遍历这个,然后用完整的 <a.../a>
.
<li>
标签
$.each( $('.nav-container>a'), function(i, item){
var menupunkt = '<li>' + item + '</li>'
console.log(i, menupunkt);
});
示例:http://codepen.io/anon/pen/bwbgap, https://jsfiddle.net/86g44ssp/
在我的控制台中,我只看到以下内容
<li>http://xyz.ccom/_index.php?page=_sub_papa&main=tw</li>"
为什么我没有得到整个 a?因为当我只打印 "item" 时,我得到了整个 <a.../a>
$.each( $('.nav-container>a'), function(i, item){
var menupunkt = '<li>' + $(item).text() + '</li>'
console.log(i, menupunkt);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="nav-container desktop">
<a href="_index.php?page=_sub_papa&main=klassen">One</a>
<a href="_index.php?page=_sub_papa&main=tw">Twp</a>
</div>
我相信你想访问 outerHTML。我已经包含了另一个 SO 答案的代码:
jQuery, get html of a whole element
https://jsfiddle.net/86g44ssp/1/
我所做的更改在这里:
jQuery.fn.outerHTML = function() {
return jQuery('<div />').append(this.eq(0).clone()).html();
};
... other code here ...
var menupunkt = '<li>' + $(item).outerHTML() + '</li>'
$( ".nav-container a" ).wrap( "<li></li>" );
这是将 .nav-container a 包裹在列表元素中的最快方法。
虽然循环 $.each('.nav-container a', function(i,v) {});
每个 <a>
都像对象 NOT at TEXT
如果您想要定位特定元素,请使用:
$.each('.nav-container a', function(i,v) {
var fullObject = $(this).html(),
link = $(this).attr('href'),
text = $(this).text();
});
item
或 this
代表一个 DOM 元素。当您将其视为字符串时,您将其转换为字符串。您可以使用 item.outerHTML
- 您要查找的字符串 - 代替 item
.
$.each( $('.nav-container>a'), function(i, item){
var menupunkt = '<li>' + item.outerHTML + '</li>'
console.log(i, menupunkt);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="nav-container desktop">
<a href="_index.php?page=_sub_papa&main=klassen">One</a>
<a href="_index.php?page=_sub_papa&main=tw">Twp</a>
</div>
注意
不确定它是否有优势,但我更喜欢:
$('.nav-container>a').each(function(i, item){
var menupunkt = '<li>' + item.outerHTML + '</li>'
console.log(i, menupunkt);
});
我已经更新了your fiddle,你只需要更改
var menupunkt = '<li>' + item + '</li>'
到
var menupunkt = '<li>' + item.outerHTML + '</li>'
并且无需添加额外的包装或其他东西,只需从外部HTML 获取 HTML 就大功告成了!
这是类型转换造成的。当您执行 '<li>' + item + '</li>'
时,JavaScript 运行时将尝试将 item
转换为字符串。这是通过调用 item
上的 toString()
方法完成的 "under the hood",例如item.toString()
。您可以通过显式执行强制类型转换:
console.log(i, item.toString());