2011-05-30 71 views
0

這是jquerymobile應用程序的一個片段。這是一個簡單的文件管理器,允許刪除文件,並且我想確認刪除。我正在嘗試使用javascript 確認來仔細檢查一個操作是否應該繼續;但似乎無論我做什麼,我都不能停止它發生。jquerymobile確認似乎沒有影響結果?

<script type="text/javascript"> 
    $(document).ready(function(){ 
     $(".confirm").live("click",function(ev){ 
      var nam = $(this).html(), 
       loc = $(this).attr('href'), 
       answer = confirm("Are you sure you want to delete:\n\n" + nam); 
      if (answer){ 
       return true; 
       //window.location.href = loc; 
      }else{ 
       ev.preventDefault(); 
       return false; 
       window.location.href = window.location.href; 
      } 
     }); 
    }); 
</script> 

... 

<div data-role="page" data-theme="a"> 
    <div data-role="content"> 
     <ul data-role="listview" data-inset="true"> 
      ... 
      <li><a class="confirm" href="?delete=#urlEncodedFormat(f.name)#">#f.name#</a></li> 
     </ul> 
    </div> 
</div> 

你可以看到,我已經嘗試了3種不同的方法來防止重定向頁面的鏈接,但沒有人似乎在做什麼,我所希望的。我究竟做錯了什麼?

回答

2

你正在使用.live而不理解它是如何做到這一點。

更改.live.bind它會工作。

另外 - 閱讀大約.live以瞭解.live綁定到文檔並在事件冒泡時捕獲事件,因此防止默認操作或任何事情已爲時過晚。

而且順便說一句 - 如果你在返回語句之後放置代碼,有人可能會因爲某種奇怪的原因而覺得它實際上運行時感到困惑。

[編輯]

如果你想讓它不使用Javascript(漸進增強和東西)工作,那麼你應該去對話服務器端生成的問這個問題,即使沒有任何的JavaScript的目的。

如果你不關心漸進式增強功能,並希望它只能在高端瀏覽器中工作,那麼你爲什麼要打擾href? 將href重命名爲data-href,並在用戶確認後加載它。你不必防止任何事情。

+0

你說得對,我誤解'.live',但'.bind'也不適用於我,因爲列表項是通過ajax加載的。正在瀏覽的文件系統要預先加載整個文件,所以它一次只加載一個目錄。我嘗試使用'.bind'(我實際上曾嘗試'.click'),但它仍然沒有做到我想要的。我可能只是嘗試切換到jquerymobile對話框,看看我能否得到這個工作。 – 2011-05-30 20:03:01

+0

是的。 'bind'與'live'不同。在使用「live」方法之前,我使用jquery完成了一個重要的項目,而且我必須全力以赴。你自己處理ajax調用,爲什麼不把新的點擊綁定到你加載的任何東西?這就是它在舊時代的做法;)另外 - 請參閱我的編輯 – naugtur 2011-05-31 07:00:53

+1

我使用了jqmobile對話框功能。我並不擔心漸進增強功能,因爲它是一個應用程序,用於我的家中,由我,在我的設備上使用,而且我無意將JS關閉。 – 2011-06-01 12:13:31

相關問題