jQuery next() - 选择器
Posted
技术标签:
【中文标题】jQuery next() - 选择器【英文标题】:jQuery next() - selector 【发布时间】: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 ;)
【问题讨论】:
仅供参考,在这种情况下,“代码”是不可数名词。因此“代码”是不正确的。 【参考方案1】:您应该给每个<div>
一个id
并以这种方式附加处理程序。
Javascript 并不真正关心您在 html 中的哪个位置编写它。将所有的 Javascript 放在一个脚本文件中,并通过 className/id 引用 DOM 元素。
【讨论】:
不行,每个div和脚本都是动态生成的。 @anonymous:当然可以。生成<div>
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放在<div>
标签而不是<script>
标签上。
为什么是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。实际上,您已经按照代码生成的定义这样做了。而且,事实上,您的解决方案几乎就是我们其他人建议您做的事情。很抱歉,我们不够清楚,您无法理解我们。以上是关于jQuery next() - 选择器的主要内容,如果未能解决你的问题,请参考以下文章