jquery - 在元素的每个实例上更新 JQuery 变量

标签 jquery html css

我想在名为 .menuwithimage 的 div 类上运行一段 JQuery。下面是代码:

$(document).ready(function() {
    var link = $(".menuwithimage .inner h2").html();
    var text = $(".menuwithimage .inner h2 a").html();

    $(link).insertBefore(".menuwithimage .inner");
    $(".menuwithimage .inner h2 a").replaceWith(text);
    $(".menuwithimage a").empty();
});

此代码在第一个实例上运行完美,但是当此 div 的另一个实例出现时变量不会更新,因此它将遇到的类名的第一个 div 中的内容插入到类名的后续 div 中同类。

有没有办法为每个实例重新运行这段代码作为新代码,这样它就不会获取旧的可变数据?我试过使用 .each、$.each() 和 while ,正如前面主题所建议的那样,但不能完全让它工作。

我真的很感激在这方面的一些帮助。

提前致谢!

此处标记:http://jsfiddle.net/rn15vfn3/

最佳答案

你可以简单地将你的代码包装到每个循环中(因为你想处理所有的.menuwithimage):

$(".menuwithimage").each(function() {
    var link = $(this).find(".inner h2").html();
    var text = $(this).find(".inner h2 a").html();

    $(link).insertBefore($(this).find(".inner"));

    $(this).find(".inner h2 a").replaceWith(text);
    $(this).find("a").empty();
});

演示:http://jsfiddle.net/rn15vfn3/1/

使用 $(this).find(...) 您可以在单个 .menuwithimage block 中选择必要的元素。

您还可以使代码更简单:

$(".menuwithimage").each(function() {
    var $link = $(this).find(".inner h2 a");
    $(this).find(".inner h2").text($link.text());
    $link.prependTo(this).empty();
});

演示:http://jsfiddle.net/rn15vfn3/2/

关于jquery - 在元素的每个实例上更新 JQuery 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27293739/

相关文章:

css - 如何在导航栏中定位 <img>?

html - CSS 网格预水平滚动

jquery - Firefox 中 jquery find 的严重性能问题

jquery - 一页水平网站未以调整大小为中心

c# - 如何在 ASP.NET HyperLink 控件中居中图像

javascript - 我可以使用提交按钮和JS提交表单吗?

javascript - 如何不将 toggle() 应用于已经显示 : none? 的 div 元素

javascript - 为什么这个 <li> 被多次添加?

javascript - x, y, left, right 与 CSS 的区别

javascript - 尽管在 safari 和 Firefox 上工作,如何修复超过 100vh 的英雄视频并且不只在 chrome 上播放