【问题标题】:Joomla's modal window removing id and class namesJoomla 模态窗口删除 id 和类名
【发布时间】:2013-04-22 21:29:07
【问题描述】:

我在模块中有一个表单,我想在模态窗口中显示。根据 id 窗口可能是空白的,或者如果它确实显示任何内容,所有类和 id 都被删除,所以我无法验证或设置表单样式。

截断代码: ...

  <div id="feedback">
    <div class="feedbackinner">
      <!-- form module  -->
        <div id="contact-wrapper">
          <!--form elements with ids and classes-->
        </div>
      <!-- end module -->
    </div><!-- end .feedbackinner -->
  </div><!-- end #feedback -->

这会触发没有任何 id 或类的模式窗口(使用 Firefox Web Developer 大纲当前元素):

<a href="#contact-wrapper" class="modal" rel="{handler: 'clone', clone: 'contact-wrapper'}">Click for ugly unstyled form that won't validate</a>

这会触发一个空白的模态窗口:

<a href="#feedback" class="modal" rel="{handler: 'clone', clone: 'feedback'}">Click if you like staring at a blank white box</a>

所以最重要的是如何将所有 id 和类保存在模态窗口中,为什么调用父 div 不起作用?

(作为一种解决方法,我将表单移动到组件视图,然后使用handler: 'iframe' 而不是克隆来调用它。我仍然想知道模态窗口发生了什么。)

谢谢!

【问题讨论】:

  • 您需要发布更多代码 - 我真的不明白如何产生问题

标签: jquery mootools joomla2.5 squeezebox


【解决方案1】:

没有看到代码,但在元素上使用Element.clone 的含义是显而易见的。从 HTML 的性质来看,id 是独一无二的。这意味着您实际上不应该同时将多个具有相同 id 的元素注入 DOM。

MooTools 通过从任何创建克隆的元素中隐式删除 id 来正确反映情绪:

https://github.com/mootools/mootools-core/blob/master/Source/Element/Element.js#L860

.clone 方法接受可选参数,允许您覆盖内容:

clone: function(contents, keepid){ - 也见http://mootools.net/docs/core/Element/Element#Element:clone

克隆的元素也会丢失您可能分配给它们的所有事件(但cloneEvents 可以帮助解决这个问题)。

我会建议查看squeezebox 实现并仔细检查克隆是否以预期的方式实现。更好的做法可能是采用并重新附加元素 - 或复制整个 innerHTML(尽管这将再次导致非委托事件失败)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-27
    • 2020-10-14
    • 1970-01-01
    • 2015-10-18
    相关资源
    最近更新 更多