【发布时间】:2019-02-09 20:02:27
【问题描述】:
我在弄清楚我的代码为什么不起作用时遇到了一些麻烦。在下面的示例 html 中,我有三个 nav-tab 元素。我正在尝试针对第二个元素(产品选项卡)进行以下更改:
- 在悬停时为 div.nav-tab 元素添加红色边框(仅限产品标签)
- 将“产品”的文本更改为“商品”
我知道这可以通过更改 CSS 和 HTML 轻松完成,但我正在尝试仅使用 jQuery。
在我的脚本中,我试图创建一个 jQuery 变量,然后在其上使用 .hover 和 .find 方法,但我总是收到错误“.find -or- .hover is not a function”。
另外,我以后可能想在导航栏的开头添加更多选项卡,所以我不想使用类选择器之类的东西并定位第二个元素,因为当我稍后添加更多选项卡时,这最终不会定位到产品标签。比如……
$( ".nav-tab" )[1].hover...
我确信有一种简单的方法可以做到这一点。有人可以就如何最好地使用 jQuery 进行更改提供一些建议吗?提前致谢!
我创建了一个示例fiddle
<nav>
<div class="nav-tab">
<a class="nav-link" data-name="About">
<div class="item-menu">
<span>About</span>
</div>
</a>
</div>
<div class="nav-tab">
<a class="nav-link" data-name="Products">
<div class="item-menu">
<span>Products</span>
</div>
</a>
</div>
<div class="nav-tab">
<a class="nav-link" data-name="Contact">
<div class="item-menu">
<span>Contact</span>
</div>
</a>
</div>
</nav>
<script>
$( document ).ready(function() {
let products = $( ".nav-tab" ).has( '[data-name="Products"]' ).get( 0 );
products.hover(
function() {$(this).addClass("red-border")},
function() {$(this).removeClass("red-border")}
);
products.find('span').innerText="Merchandise";
});
</script>
【问题讨论】:
-
这是你想要的吗? jsfiddle.net/kLev24gy
-
当您使用
.get(0)时,您将取消引用 jQuery 对象,从而将其更改为纯 JavaScript 对象。两个对象都不能被对方的方法“看到”。
标签: jquery