2013-03-06 42 views
0

我有一個輸入元素和它旁邊的鏈接。用戶在輸入中輸入一些文本,然後單擊鏈接進行查詢,以查找與輸入內容相關的內容。結果應該使用fancybox來顯示。這裏是我的js代碼:爲什麼fancybox不會在第一次綁定這段代碼?

$(".srcaut").click(function() { 
     if($(this).prev("input").val() == '') { 
      alert('Empty field'); 
      return false; 
     } 

     srch = $(this).attr("id").replace("srch-",''); 

     $(this).attr('href',Url+'/'+srch+'/'+$(this).prev("input").val()); 
     $(this).fancybox(); 

    }).prev("input").keypress(function(even) { 
     if(even.keyCode == 13) { 
      $(this).next('.srcaut').click(); 
      return false; 
     } 

}); 

不過的fancybox不顯示的第一次用戶輸入一些文字,然後點擊鏈接或打加載頁面後「Enter」鍵。但之後是有效的。

問題是什麼。似乎fancybox不綁定鏈接在第一時間,但爲什麼?

+0

是您第一次打電話的點擊功能嗎? – 2013-03-06 07:54:58

+0

當用戶點擊鏈接或點擊「Enter」鍵時調用它。 – 2013-03-06 07:58:16

+0

控制檯中的任何東西?這樣做時你會得到什麼:'console.log(Url +'/'+ srch +'/'+ $(this).prev(「input」)。val());' – qwerty 2013-03-06 08:02:15

回答

4

一個鏈接調用.fancybox()不會顯示花哨的框,它只會準備鏈接被點擊時顯示一個奇特的盒子。這就是爲什麼它只能在click處理程序中準備好花式框的第二次。

加載文檔時,您可能需要在鏈接上調用.fancybox(),但這引發了使用根據input的內容動態構建的鏈接的問題。您可能需要嘗試在inputblur事件中構建鏈接。

如何防止顯示它在if條件內點擊 事件鏈接?

在致電.fancybox(),你可以註冊一個click處理程序,將stop event propagation如果input是空的,請參閱http://jsbin.com/exomad/3

+0

謝謝ybo,當我在頁面加載時綁定在鏈接上時,它工作正常。但問題是當輸入是空的,用戶點擊鏈接。那時我不想顯示fancybox,但通過綁定文檔加載時間顯示,所以我認爲把它放在點擊事件。 – 2013-03-06 08:19:07

+0

如何防止在鏈接的點擊事件中的if條件中顯示它? – 2013-03-06 08:20:00

+0

新增了第二個問題的答案 – ybo 2013-03-06 08:37:15

1

例如我張貼這對其他誰面臨類似的問題..

在我的情況,我不得不

$('#addvideos').on("click",function(){ 
    $(".modal").fancybox(fancybox_default); 
}); 

fancybox_default < - 商店花哨的盒子形狀{高度,寬度}

addvideos < - 指向一個URL元素

所以在我的情況下,當我點擊的URL但之後工程的配置不會加載的第一次。 (我的意思是它的作品(它顯示彈出),但它不會加載彈出窗口的高度和寬度)

我不得不添加var trash = $(「。modal」)。fancybox(fancybox_default); < - 在點擊處理程序之前... //僅加載該物件並保存在變量中...

和它的工作對我來說:-)

0

我能夠動態生成的錨標記結合的Click事件之前初始化的fancybox(我想它可以工作,即使你初始化之前調用)

來解決這個
$('#a_email' + resultId).fancybox({ 
        //jq('#a_email' + resultId).fancybox({    
        'width': '45%', 
        'height': '55%', 
        'autoScale': true, 
        'scrolling': 'no', 
        'transitionIn': 'fade', 
        'transitionOut': 'fade', 
        'type': 'iframe' 
       }); 

,然後調用的fancybox直接

$.fancybox({       
         'width': '45%', 
         'height': '55%', 
         'autoScale': true, 
         'scrolling': 'no', 
         'transitionIn': 'fade', 
         'transitionOut': 'fade', 
         'type': 'iframe', 
         'href': url 
        }); 

有什麼想法?

相關問題