2012-08-30 165 views
1

我正在構建一個網頁,其中包含有關我們公司可以執行的各種分析的信息。我試圖設置它的部分是每個分析的高級概覽部分,然後是一個「更詳細」按鈕,打開一個對話框,其中包含更深入的信息。jQuery選擇器有問題

我有這個工作很好,如果我使用多行代碼明確提到每個按鈕和每個對話框的ID。但是,當我嘗試使用選擇器使其成爲幾行代碼時,我無法再使用它了。

下面是一些HTML的:

<div id="van_westendorp" class="solution price1"> 
    <h3 class="solution_header"><a href="#">Van Westendorp</a></h3> 

    <div class="solution_content"> 
     <ul class="overview"> 
      <li><em>Price:</em> 
       <div class="dollar ui-state-default ui-corner-all"><img src="images/dollar.png"></div> 
       <div class="dollar ui-state-default ui-corner-all"><img src="images/dollar.png"></div> 
      </li> 
      <li><em>Time:</em> 3-5 days</li> 
      <li><em>Pros:</em></li> 
       <ul> 
        <li>Easy task for the respondent.</li> 
        <li>Prices can be open-ended.</li> 
       </ul> 
      <li><em>Cons:</em></li> 
       <ul> 
        <li>Deliverables imply more precision than actually exists.</li> 
        <li>Heavy reliance on respondents' understanding of questions.</li> 
       </ul> 
     </ul> 

     <div id="van_westendorp_link" class="center"> 
      <button class="ui-state-default ui-corner-all detail">More Details</button> 
     </div> 

     <div id="van_westendorp_window" class="dialog" title="Van Westendorp Details"> 
      <h2 class="center">How It Works</h2> 
      <ul> 
       <li>Things happen.</li> 
       <li>It's awesome.</li> 
      </ul> 
      <h2 class="center">Why It Works</h2> 
      <ul> 
       <li>Science!</li> 
      </ul> 
     </div> 
    </div> 
</div> 

ID爲「van_westendorp_link」的DIV是按鈕,與ID「van_westendorp_window」的DIV是應打開對話窗口。

而這裏的什麼我已經試過了JavaScript的最新迭代:

$("[id$='link']").click(function(){ 
    $(this).next("[id$='window']").dialog('open'); 
    event.preventDefault(); 
}); 

的第一行代碼的工作;如果我用對對話框ID的顯式引用替換第二行,那麼一切正常。這是我嘗試使用選擇器引用對話框的第二行,這個選擇器讓我感到困惑。

我正在使用查詢用戶界面的對話框代碼,如果這很重要。任何想法爲什麼我無法正確引用對話框?

+0

你加載UI庫? – Gustonez

回答

1

你在函數參數忘記event

$("[id$='link']").click(function(event){ 
           ^
            here 
+0

仍然無法正常工作。 = /事件在函數參數中做了什麼?我對javascript/jquery顯然很新,在學習走路之前必須學會跑步。 –

+0

@JamesC。 'event'是點擊函數的事件,它可以是任何像'..function(e)'這樣的變量,您應該添加,因爲您有'event.preventDefault();'這意味着阻止鏈接轉到href點擊它時標記, – mgraph

0

.dialog()

更換.dialog('open')但是,如果你需要再次重新打開對話框,你必須使用另一種方法。

HTML:

<div id="van_westendorp_window" title="Box Title" style="display: none;"> 
... 
</div> 

的Jquery:

​​