2011-06-02 71 views
1

讓我從排位開始,我對jquery非常陌生。我已經使用它一個月左右,現在取得了中等的成功。我希望我的問題很容易回答。如何在jQuery對話框中選擇一個元素

基本上,我在頁面上有一個對話框,其中包含在DWR Ajax調用中生成的內容。我想要做的是在我的內容中定義幾個div,這樣當單擊一個頭div時,第一個引用的第二個div標籤需要通過引用div上的jquery slideToggle函數隱藏/顯示。儘管我可能會嘗試,但我無法調用這個方法。

這是我調用的javascript方法,請注意,爲了測試目的,我省略了dwr ajax調用,並且手動設置了showdialog方法中的html。

對話框打開正常,並按預期顯示我的內容。但是,單擊包含擴展頭類的div不會切換引用的'ELEMENT_ONE'div的視圖。

任何想法或意見將不勝感激。我確信我正在做一些愚蠢的事情,但在我的生活中,我無法解決這個問題。

的Javascript

function showdialog() { 

var data = '<DIV class="expansion-header" reference="ELEMENT_ONE">' 
     + '<B>Click to Toggle Element One<B></DIV>' 
     + '<DIV id="ELEMENT_ONE" name="ELEMENT_ONE">' 
     + 'This is element ones text it contains a<BR>few lines of gibberish.<BR><BR>' 
     + 'This is the second paragraph to be hidden when the header is clicked</DIV>'; 

    $("#StatusDialog").html(data); 
    $("#StatusDialog").dialog("open"); 
} 

$(document).ready(function() { 

    $(".expansion-header").click(function() { 
    var reference = $(this).attr('reference'); 
    $("#" + reference).slideToggle(400); 
    }); 

    $("body").append('<div id="StatusDialog" title="Dialog Title"></div>'); 
    $("#StatusDialog").dialog({ 
    autoOpen: false,  
    resizable: true, 
    width: 750, 
    modal: false   
    });  
}); 

HTML

<div id="status" class="status" style="cursor: pointer; cursor: hand;" onclick="showdialog()">Click Me</div> 

回答

1

您已經在.expansion-header之前定義了單擊事件!

應重視的點擊事件showdialog()

或使用.live()

+0

你先生...是一個明星。我告訴過你我正在做的事情很傻!我改變了點擊代碼來使用live()函數和中提琴!非常感謝你:) – 2011-06-03 00:13:32

+0

@Jason,一定要接受這個答案,如果它解決了問題。 – GregL 2011-06-03 01:02:29

+1

@GregL,感謝您的提示,新的堆棧溢出,所以不確定的要求。按照建議接受了這個答案。乾杯,賈森。 – 2011-06-03 01:24:20

0

我相信,當你顯示一個對話框,您所看到的HTML實際上是你正在瀏覽的網頁的一部分。所以你應該能夠瀏覽DOM中的元素,就像其他jquery選擇器一樣。例如,您應該可以這樣說:

$('#ELEMENT_ONE').Html('<p>New Content</p>'); 
0

this here工作

$(文件)。就緒(函數(){

$考慮結合它( 「.expansion-header」)。live('click',function(){

var reference = $(this).attr('reference'); 
$("#" + reference).slideToggle(400); 

});

$( '#狀態')。點擊(函數(){

VAR數據= '' + '點擊切換元件中一' + '' +「這是元素那些文字包含一個
幾行亂碼。

' +'這是當單擊標題時要隱藏的第二段';

$("#StatusDialog").html(data); 
$("#StatusDialog").dialog("open"); 

}); (「body」)。append(''); $( 「#StatusDialog」)對話框。({
的AutoOpen:假,
可調整大小:真, 寬度:750,模態 :假
});
});

+0

謝謝你,上面提到的.live()方法提供了一種享受。我的頁面現在按我的預期運行。感謝您的努力:) – 2011-06-03 00:46:42