这一直困扰着我。我试图在函数中创建一个单击事件,这似乎不起作用。这是基本布局:
function init() {
$('#a2').click(function() {
//does some stuff. Works fine.
$('#addDest').click(function() {
//does more stuff. Works fine…
if ($("#input2").is(':visible'))
{alert("test");};
});
});
};
页面总是假设#input2可见!即使它正在打开和关闭。我检查了Firebug,它能够知道真相。但是,当我点击#input2时,警报会一直弹出! 我可以将我的问题部分抛出函数之外。但这会产生更多问题 - 因为当文档加载时我会有一些未声明的变量。我想我做了很长的路,也许事件处理程序或clickevents是更多的解决方案。但我还没达到那么高的理解水平。我知道它正在读取该问题区域,就像页面加载时一样。这个问题有更简单的解决方案吗?我知道我非常需要了解更多...非常感谢!!
答案 0 :(得分:1)
使用此标记:
<button id="a2">A2</button>
<button id="addDest">Add</button>
<input type="text" id='input2'>
和这个CSS:
#addDest,#input2{display:none;}
这有效:
$('#a2').click(function() {
$('#addDest').show();
});
$('#addDest').click(function() {
if ($("#input2").is(':visible')) {
alert("test");
};
$('#input2').show();
});
说明:
如果您更改
$('#input2').show();
为:
$('#input2').toggle();
您可以根据输入的可见性看到它发生变化。
答案 1 :(得分:0)
问题可能是#addDest上的click
事件被反复绑定。在绑定之前尝试执行$('#addDest').unbind("click")
答案 2 :(得分:0)
你可以尝试这样的事情
$('#a2').click(function() {
$(this).attr('data-clicked','true');
});
$('#addDest').live('click', function() {
if ($("#input2").is(':visible') && $('#a2').attr('data-clicked') == 'true')
{alert("test");};
});
如果您希望它仅在第一次点击时发出警报
$('#a2').click(function() {
$(this).attr('data-clicked','true');
});
$('#addDest').live('click', function() {
if ($("#input2").is(':visible') && $('#a2').attr('data-clicked') == 'true'){
if($(this).attr('data-clicked') != 'true'){
$(this).attr('data-clicked','true');
alert("test");
};
}
});