【问题标题】:Moving a DOM Element in jQuery (Layer Slider)在 jQuery 中移动 DOM 元素(图层滑块)
【发布时间】:2013-12-09 05:37:00
【问题描述】:

jQuery 菜鸟在这里。抱歉,如果问题真的很简单,尽管我正在努力学习,但我并没有接触过太多的 jquery。

我试图将 DOM 元素从一个地方移动到另一个地方,但我似乎遇到了一些错误。

当我尝试测试 DOM 是否存在时,我得到元素不在 DOM 中的指示:

if (jQuery('.ls-yourlogo').length) {
    alert('Found!');
} else {
    alert('NOT FOUND!');
}

我正在尝试将 .ls-yourlogo 移动到 .ls-inner

我尝试了几种不同的方法,包括:

jQuery('#layerslider_1').children('img').appendTo('#layerslider_1').children('.ls-inner');

还有

    jQuery('.ls-yourlogo').appendTo('.ls-inner');

我知道 .ls-yourlogo.ls-inner DOM 元素都是用 jQuery 创建的。我不确定这是否是导致问题的原因。

我目前正在使用 WordPress 的图层滑块插件:http://codecanyon.net/item/layerslider-responsive-wordpress-slider-plugin-/1362246

  <div id="slider">
<script type="text/javascript"></script>
<script type="text/javascript"></script>
    <div class="ls-wp-fullwidth-container" style="height: 317px;">
        <div class="ls-wp-fullwidth-helper" style="height: 317px; width: 1349px; left: 0px;">
            <div id="layerslider_1" class="ls-wp-container ls-container ls-noskin" style="width: 1050px; height: 317px; margin: 0px auto; visibility: visible;">
            <div class="ls-webkit-hack"></div>
            <div class="ls-inner">
                <div class="ls-layer ls-active">
                    <img class="ls-s-1">
                    <p ></p>
                    <p ></p>
                </div>
                <div class="ls-layer" >
                    <img class="ls-s-1">
                </div>
            <div class="ls-circle-timer"></div>
            <div class="ls-loading-container"></div>
            <div class="ls-thumbnail-wrapper"></div>
            <div class="ls-shadow"></div>
            <img class="ls-yourlogo">
        </div>
    </div>

感谢您的宝贵时间。

【问题讨论】:

  • 如果这两个元素都是由脚本创建的,那么您必须在创建这些元素后执行移动它们的代码...jQuery('.ls-yourlogo').appendTo('.ls-inner'); 看起来不错
  • 你能提供一个适当缩进的小提琴吗?我注意到一些没有关闭的标签。
  • @Arun P Johny
    我如何才能等待元素被创建然后检查它们?在上面的 if 语句中,永远找不到 .ls-yourlogo。 C.S 我相信有人已经提供了一个 jsfiddle。未关闭的 DOM 元素是因为我必须从浏览器复制和粘贴。这部分 DOM 100% 是由我引用的插件创建的。

标签: javascript jquery html wordpress dom


【解决方案1】:

终于找到了在 Layer Slider DOM 中移动元素的解决方案。

        jQuery('#layerslider_1').layerSlider({
        hoverPrevNext : false,
        cbInit              : function(element){
                                jQuery('.ls-yourlogo').appendTo('.ls-inner');
                                jQuery('.ls-thumbnail-slide > a').addClass('ls-thumbnail-style');

                              }
    });

ID 是页面上存在的图层滑块的 ID。我的恰好是 1,所以它的#layerslider_1。下一个重要部分是回调 cbInit,在此函数中,您可以进行追加以及您想要对 DOM 进行的任何其他标记更改。 希望这可以帮助某人。

【讨论】:

  • 哥们,你是个巫师!我花了一整天的时间试图让叠加层发挥作用,这就是钱!
  • 我很高兴这可以帮助到某人,我花了一些时间研究 layerslider 才找到它。
【解决方案2】:

试试这个:

建议不要每次都输入 jQuery,而是使用 $ 来代替它,这样对你来说更容易。

if ($('.ls-yourlogo')) {
    alert('Found!');
} else {
    alert('NOT FOUND!');
}

我还建议使用#ids 而不是类,因为在Jquery 中使用ids 比类快得多。并确保在检查它是否退出之前先调用创建 .is-yourlogo 类的脚本。

【讨论】:

  • 你应该寻找 $('.ls-yourlogo')).length
  • $('.ls-yourlogo').length 对我来说从来没有成功过。当把它扔进 IF 时,我总是得到 else。
  • 为什么永远找不到 .ls-yourlogo?
  • 它可能找不到 $('Is-yourLogo') 的原因是因为它在您调用此语句时不存在于您的 dom 中。
【解决方案3】:

see this jsfiddleHTML 中的&lt;/div&gt; 标记没有正确关闭,这可能是导致问题的一部分。如果我关闭一些并运行我的代码,它会删除带有 class='ls-your-logo' 的元素并将其附加到 &lt;div class='ls-inner'&gt; 最终与以前相同的位置。也许如果你看看我的小提琴,你可以更好地关闭 div 标签到你希望它看起来正确的样子

【讨论】:

  • 不同的标签没有被关闭只是我不擅长复制和粘贴。这部分 DOM 是由 WordPress 的插件生成的。我知道我试图操纵的元素是动态创建的。我不知道它们是什么时候创建的,因此无法访问它们。
  • 我测试了你的小提琴。而你的工作的原因是因为你已经手动创建了 DOM。这个 DOM 是由我引用的插件创建的,我试图操作的元素是动态创建的(可能由 jQuery)。即使是在你的小提琴中工作的 .ls-yourlogo 测试,也只会在我的代码中返回“NOT FOUND”。如何检查动态创建的 DOM 的创建?
猜你喜欢
  • 1970-01-01
  • 2012-01-23
  • 2013-02-28
  • 2011-11-16
  • 2020-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多