【问题标题】:can't call jquery dialog on result of find无法在查找结果上调用 jquery 对话框
【发布时间】:2012-01-26 18:04:30
【问题描述】:

全部,

我正在尝试在用户单击图像时显示一个 JQuery 对话框。

这是我的 HTML 的精简版:

<div class="MyHelpButton" style="display: inline;">
    <img src="{{MEDIA_URL}}/img/MyHelpIcon.png"/>
    <div class="MyHelpText" title="MyTitle">
        here <i>is</i> <u>some</u> <b>text</b>
    </div>
</div>

还有我的 JavaScript:

$(function() {
    $(".MyHelpText").dialog({autoOpen:false});
    $(".MyHelpButton").click(function() {
        $(this).find(".MyHelpText").dialog("open"); // this doesn't work
        //$(".MyHelpText").dialog("open"); // this works
    });
});

如您所见, dialog("open") 函数仅在我直接使用类选择器时有效,而在我使用 find() 函数时无效。但是由于页面上可能会有 loads 的 MyHelpButtons,我必须能够找到这个特定的 MyHelpText(被点击的 MyHelpButton 的子项) - 因此我使用 find ()。

关于我做错了什么有什么想法吗?

感谢您的帮助。

【问题讨论】:

  • 您可能需要在您的答案接受度上做一些工作,您的接受度为 0%。它没有打开,因为 .find 没有返回任何项目。阅读文档api.jquery.com/find,看看有什么问题。
  • 这个工作:$($(this).selector + " .MyHelpText").dialog("open");jsfiddle.net/QGgyq
  • 成功了。非常感谢您的帮助
  • @asawyer - 我如何接受答案?
  • 每个问题的答案左侧都有一个绿色复选框。如果它是正确的并且对您有所帮助,请单击它! :) 如果您愿意接受,我会将我的评论移至答案。

标签: jquery jquery-ui dialog find


【解决方案1】:

This works:

$($(this).selector + " .MyHelpText").dialog("open"); 

具有语法 $("{someselector} {anotherselector}") 的选择器提示 jQuery 执行后代搜索,如下所述:

http://api.jquery.com/descendant-selector/

【讨论】:

    【解决方案2】:

    试试这个http://jsfiddle.net/heera/cL7nX/3,希望对你有帮助。

    【讨论】:

    • 每次在点击处理程序上重新创建一个 ui 对话框会导致严重的内存泄漏。
    • 如果在对话框的关闭按钮单击时调用 $(this).remove() 会怎样。 jsfiddle.net/heera/cL7nX/3
    • 我仔细检查了 Sieve,至少在 IE 中,该解决方案每次点击都会泄露对话框 html 对象的副本。
    • 我有一个类似的项目。我用一个名为 content 的内部 div 设置了一个对话框实例。然后每次我想显示对话框时,我都会填充内容 div,然后显示。
    • 其实我最后就是这么做的。简单得多。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-02
    • 1970-01-01
    • 2014-04-13
    • 1970-01-01
    • 2012-11-11
    相关资源
    最近更新 更多