2011-08-16 59 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