【问题标题】:jQuery next() - selectorjQuery next() - 选择器
【发布时间】:2011-03-02 17:03:44
【问题描述】:

我在它们下面有几组 javascript 代码和 div:

     <script type='text/javascript'>
                    jQuery(document).ready(function(){
                        jQuery(".display").something({
                        /*myfunction*/
                        });
                    });
                </script>

        <div class="display"></div>  

     <script type='text/javascript'>
                    jQuery(document).ready(function(){
                        jQuery(".display").something({
                        /*myfunction*/
                        });
                    });
                </script>

        <div class="display"></div>      

(...)

有没有办法在精确的 JS 之后只选择 .display div?我一直在考虑 next() 但很难附加到 document.ready ;)

【问题讨论】:

  • 仅供参考,在这种情况下,“代码”是不可数名词。因此“代码”是不正确的。

标签: javascript jquery next


【解决方案1】:

您应该给每个&lt;div&gt; 一个id 并以这种方式附加处理程序。

Javascript 并不真正关心您在 HTML 中的哪个位置编写它。将所有的 Javascript 放在一个脚本文件中,并通过 className/id 引用 DOM 元素。

【讨论】:

  • 不行,每个div和脚本都是动态生成的。
  • @anonymous:当然可以。生成 &lt;div&gt;s 时为其生成 ID 或类,并使用一个脚本来处理它们。
【解决方案2】:

只需给每个 DIV 一个唯一的 id,然后在您的选择器中使用该 id。

【讨论】:

  • 不行,每个div和脚本都是动态生成的。
  • 那么为什么动态生成不能为 Javascript+HTML 的每个部分使用不同的 id 呢?
【解决方案3】:

你可以给脚本标签一个唯一的 id 并调用 next():

<script id="script-tag-1">
jQuery(function() {
  var node = $('#script-tag-1').next('.display');
});
</script>
<div><!-- content --></div>

jsFiddle:http://jsfiddle.net/SYgEX/

【讨论】:

  • 你应该把ID放在&lt;div&gt;标签而不是&lt;script&gt;标签上。
  • 为什么是should?也许他想在不与现有 html 混淆的情况下添加 javascript 逻辑,或者有一个非常模块化的系统,其中脚本“添加”了功能但不是必须运行的。
  • 因为将 id 放在脚本对象上是完全奇怪的,而且从来没有人这样做过。它彻底打破了形式和功能的分离。
  • 这就是函数的用途。
【解决方案4】:

一切都是动态生成的(这就是为什么我问如何在不接触 DOM 的情况下更改我的 JS 代码!)。

反正我已经找到了最好的方法。

<?php $id = rand(); ?>

 <script type='text/javascript'>
                    jQuery(document).ready(function(){
                        jQuery(".display-"<?php echo $id;?>").something({
                        /*myfunction*/
                        });
                    });
                </script>

        <div class="display-<?php echo $id;?>"></div>  

不完美,但至少可以正常工作(并且可能会损坏,但几率非常低)。

【讨论】:

  • 你不能计算一下你生成的部分的数量并使用它吗?我建议使用 id 而不是类,因为它是唯一值。
  • 正如我们中的一些人所说,动态生成 HTML 绝不意味着您不能接触 DOM。实际上,您已经按照代码生成的定义这样做了。而且,事实上,您的解决方案几乎就是我们其他人建议您做的事情。很抱歉,我们不够清楚,您无法理解我们。
猜你喜欢
  • 1970-01-01
  • 2011-05-14
  • 1970-01-01
  • 2011-06-06
  • 1970-01-01
  • 2010-11-16
  • 1970-01-01
  • 1970-01-01
  • 2011-10-13
相关资源
最近更新 更多