javascript - Drupal 7 - 如何将 Javascript 添加到 View

标签 javascript drupal drupal-7 drupal-views

基本上,我要做的是向 View 中的每一行迭代添加一行 javascript 代码。

在 Drupal 6 中,这曾经通过 View 自定义字段完成,现在已集成到 Drupal 7 中。

当我尝试使用“全局:自定义文本”字段时,它会删除我的脚本标签。

有什么想法吗?

请注意:我不想使用 drupal_add_js,因为它需要动态插入并且我不希望内联使用它(困惑)。将根据提供的 JS 弹出一个独特的工具提示,我需要实际的行 ID。

提前致谢!!

最佳答案

在 Twitter 上回复,但为了遇到相同情况的其他人的利益(并且为了澄清)我想我会在这里重新发布。

一般来说,我不会推荐 views_php - 启用/使用 PHP 过滤器有很多缺点,这些缺点已经被 discussed at length ,当你真的不需要它时,它会增加另一个模块的膨胀。在这种情况下,您仍然可以在预处理函数中使用 drupal_add_js() 并保持动态。

简而言之,您有一个需要将同一事件绑定(bind)到的元素列表。 Event delegation立即想到一个可能的解决方案。您现在有一个用于父容器的事件处理程序,而不是 n 事件处理程序,这将使您的页面更具响应性。你不需要 jQuery,但如果你喜欢使用 .delegate()

至于如何从这个外部 JS 文件中获取 ID,很简单:确保它在您要抓取的源代码标记中。假设您正在寻找 row ID,您通常可以在每一行的“views-row-N”类中找到它。否则,您需要通过其他方式将类 ID 添加到模板中。在目标元素的事件处理程序中(你的行,一个与父元素中的 .views-row 匹配的元素),从你打算使用的类中解析 ID,并根据你从那里找到的值执行脚本的其余部分.

这种方法有很多好处:它减少了一个模块,减少了安全问题的根源,您的 JS 都在一个地方,您绑定(bind)的事件处理程序更少,您的标记更轻便且更易于阅读,并且事件委托(delegate)意味着即使稍后出于某种原因将元素动态添加到 DOM 中,该技术仍然有效。至于具体细节,这将有助于准确了解您打算对弹出窗口执行的操作。它是否正在对另一个节点进行 AJAX 调用?它是根据列表中的位置做某事吗?我很乐意从那里澄清我的答案。

关于javascript - Drupal 7 - 如何将 Javascript 添加到 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12843618/

相关文章:

drupal - 我无法更改 Drupal 7 站点中的临时目录

html - 如何使用 Drupal CSS Injector 覆盖以前的悬停状态

javascript - 如何使用用户输入的关键字在 Node.js 中执行 Twitter API 搜索

javascript - 部署到 Heroku 期间出现扩展运算符语法错误

javascript - 将 YouTube 视频静音并自动播放

drupal - Drupal 中没有标题节点

PHP 站点作为 Drupal 安装中的子文件夹

css - 从最近的内容 block 中删除用户名 Drupal 7

drupal-7 - Drupal 7 - 菜单描述存储在哪里?

javascript - 样式表,下划线输入