2011-08-16 58 views
4

我有以下jQuery代碼。我第一次點擊鏈接時,什麼也沒有發生;但是,第二次單擊該鏈接時,會發生預期的操作。jQuery事件不會觸發,直到第二次點擊?

$("a[rel]").bind("click", function(){ 
    $(".close_button_change_password").attr('id','change_password_'+$(this).attr('id')); 
    $(this).overlay({ 
     // disable this for modal dialog-type of overlays 
     closeOnClick: true, 
     mask: { 
     color: '#fff', 
     loadSpeed: 200, 
     opacity: 0.8 
     } 
    }); 
}); 

這裏是我的HTML:

<a href="#" rel="#change_password" id="1">change password</a> 

有誰知道我怎麼可能去解決這個問題?預先感謝您的幫助。

+0

什麼問題?難道你只是點擊時啓動覆蓋? – sdleihssirhc

+3

經過第一次看:**!重要!**你不能給'ID'的數字值!例如:'id =「1」'使用字母作爲第一個字符:'id =「a1」' –

+0

@roXon - 我很確定你可以。 Javascript變量不能以數字開頭,但是id是一個HTML屬性。 – mowwwalker

回答

2

嘗試

$("a[rel]").live("click", function(){ .... 

或者你可以嘗試..,但我不認爲這將解決這個問題。

$("a[rel]").live("change", function(){ .... 

並確保它在DOM準備好。


您可以嘗試並防止默認操作,也許這會干擾您的第一次點擊。

$("a[rel]").bind("click", function(event){ 
event.preventDefault(); // <---------^^ 
$(".close_button_change_password").attr('id','change_password_'+$(this).attr('id')); 
$(this).overlay({ 
    // disable this for modal dialog-type of overlays 
    closeOnClick: true, 
    mask: { 
     color: '#fff', 
     loadSpeed: 200, 
     opacity: 0.8 
    } 
    }); 
}); 
+0

現場沒有修復我的問題。 – bumfank

0

首先,用$(document).ready({})語句嵌入代碼。它確保只有在所有html語法都被瀏覽器解析後,你的dom纔會受到代碼的影響。

0

嘗試

$("a[rel]").click(function(){alert($(this).attr("id"));}); 

,看看是否有一些錯誤的HTML代碼。那麼您可以在順序添加其他的語句來調試你的js代碼

+0

我調用了你的代碼,並獲得了很好的id屬性值。 – bumfank