我有图像链接列表,并希望编写一个按钮来激活该链接上的onClick事件。所以:
'点击没有按钮' :点击链接重定向我们 '点击按钮后' :点击链接为我们带来一个编辑对话框
java script :('#settings-ico'是按钮)
eventsHandler : function() {
var self = this;
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - *
$("#settings-ico").on("click", function() {
$(".b-row > a").on("click", tileOpenDialog( event ) );
});
$("#tile-edit-save").on("click", tileEditSave() );
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - *
function tileOpenDialog( event ) {
event.preventDefault();
let id = $(this).prop("id");
this.editId = id;
$( "#tile-edit" ).css("display", "block");
console.log(id + ' click');
alert(self.pageList);
}
function tileEditSave() {}
}
按钮是"#settings-ico",然后单击它会立即将我的编辑对话框带到我身边,而不会点击任何链接。
$( "#tile-edit" ).css("display", "block");
但我想要的是在点击一些链接后显示此对话框:
$(".b-row > a").on("click", tileOpenDialog( event ) );
如何编码?为什么' titleOpenDialog()'单击按钮后触发?
答案 0 :(得分:1)
当您将函数作为回调传递时,不应该调用函数。除非他们返回另一个函数,我猜。你在做:
$(".b-row > a").on("click", tileOpenDialog( event ) );
当你应该做的时候:
// Passing in the named function so that it can be called
// later once the button is clicked
$(".b-row > a").on("click", tileOpenDialog);
或者,如果您想明确传递事件对象,可以执行以下操作:
// Creating and passing in an anonymous function that will be
// called later once the button is clicked, which will in turn
// call the inner function.
$(".b-row > a").on("click", function(event) {
tileOpenDialog( event )
});
作为对单击#settings-ico
时发生的事情的解释,基本上一旦点击它正在运行jQuery函数来选择.b-row > a
。然后它在返回值上运行.on()
方法并传入字符串"click"
,然后它运行到tileOpenDialog( event )
。由于在它之后有括号,JavaScript引擎必须首先运行该函数(这就是对话框打开的原因)然后它将返回值(undefined
)作为.on()
的第二个参数传递。