I have a aspx page with two panels having the same class, which should function as dialog box. I am trying to open the dialog box using dialog("open") but it doesn't seem to work. Below is the code snippet.
<script type="text/javascript">
    $(document).ready(function() {
        $(".descPanel").dialog({ autoOpen: false,
            open: function() {
                $(this).parents(".ui-dialog:first").find(".ui-dialog-titlebar").addClass("ui-state-error");
            }
        });
        $('.image').mouseover(function() {
            $($(this).parent()).children('.descPanel').dialog('open');
        });
    });
</script>
HTML Strcuture:
<form id="form1" runat="server">
<div>
    <table>
        <tr id="tr">
            <td></td>
            <td></td>
            <td>
                <asp:Image runat="server" ImageUrl="~/Jquery/Untitled.jpg" CssClass="image" />
                <asp:Panel runat="server" ID="mypanel" CssClass="descPanel">
                    <asp:Label runat="server" ID="mylabel" CssClass="label" Text="hello"></asp:Label>
                </asp:Panel>
            </td>
        </tr>
    </table>
    <table>
        <tr id="tr">
            <td></td>
            <td></td>
            <td>
                <asp:Image ID="Image1" runat="server" ImageUrl="~/Jquery/Untitled.jpg" CssClass="image" />
                <asp:Panel runat="server" ID="Panel1" CssClass="descPanel">
                    <asp:Label runat="server" ID="Label1" CssClass="label" Text="hello1111"></asp:Label>
                </asp:Panel>
            </td>
        </tr>
    </table>
</div>
</form>
I have verified that the element that points to the dialog has been reffered correctly. Any solutions so that I can get it working?
Overall your code should look like this instead:
$('.image').each(function() {
  var panel = $(this).siblings('.descPanel');
  $(this).mouseover(function() {
    panel.dialog('open');
  });
});    
$(".descPanel").dialog({ 
    autoOpen: false,
    open: function() {
        $(this).siblings(".ui-dialog-titlebar").addClass("ui-state-error");
    }
});
You can test it out here.
Why? Well when you call .dialog() it wraps that <div> in another set of elements, but more importantly it's moves those elements to the end of the <body>, so they're not there to find relatively anymore.  In the above we're finding the panels that go with the images and storing a reference to them before they're moved.
As an aside, you should remove that id="tr" from your code, duplicated IDs are only trouble! (and invalid HTML), use a class in those situations.
Just found out that you can also bind a function to the open event by doing:
yourDialog.bind("dialogopen", function(event, ui) {
    //your code here
});
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With