我试图使用点击它时获得的按钮的ID,但它没有工作
var idClicked;
$("input").click(function(e){
var idClicked = $(this).attr('id');
});
$(idClicked).on('click',function(e){
...
});
有什么建议吗?
答案 0 :(得分:0)
当您在变量名之前放置var
关键字时,JS将尝试在本地范围内创建该变量。因此,在函数内部和外部声明具有相同名称的变量将阻止函数访问外部变量。
因此,您在函数外声明的idClicked
变量不会从函数内更新。
正确的构造应该是:
var idClicked;
$("input").click(function(e){
idClicked = $(this).attr('id');
});
此外,当您点击idClicked
时,仅为变量input
分配值。因此,只有在第一次点击完成后才能使用idClicked
。
您可以将第二个事件代码放在第一个事件代码中。这也应该解决你的变量范围问题。
$("input").click(function(e){
var idClicked = $(this).attr('id');
$('#' + idClicked).on('click',function(e){
...
});
});
答案 1 :(得分:0)
您也可以使用target来获取ID,而不是此关键字。
var idClicked;
$("input").click(function(e){
idClicked = e.target.id;
});
if(idClicked!=undefined ){
$("#"+idClicked).on('click',function(e){
...
});
}
答案 2 :(得分:0)
你的代码将无法工作,因为你声明了事件并再次通过id在另一个事件中声明了同一个元素,并且每次点击都会导致双事件处理程序运行......他们只是一次又一次地声明事件但是从不将执行您的逻辑代码。
另一个重要的事情是你不能拥有2个具有相同id属性的元素。
您需要做的是将2个元素放入不同的ID
<input type="text" id="myid">
<button id="button_myid">my button</button>
和你的javascript代码一样
$("input").click(function(e){
var id = $(this).attr('id');
var buttonId = "button_" + id;
$("#"+buttonId).trigger("click");
});
$("#button_myid").click(function(e) {
// do stuff
});
此结构将让您能够触发其他元素上的click事件。
使用此代码的基础是您在输入上捕获click事件,并在按钮上触发其ID名称包含输入id的事件(带有前缀“ button _ ”)。
但请注意,您需要在每个按钮上声明相关事件。