这种行为是完全正确的。如果您查看 jQuery 文档,您将看到:
jQuery on
:
.on( events [, selector ] [, data ], handler(eventObject) )
返回:jQuery
jQuery data
:
.data(key)
返回:对象
这意味着当你调用时var myObject = $('.btn-place-order').data("confirm-modal");
将包含该data-
属性的值。
但是,当您调用时,$(".btn-place-order").on("click", function(e){ $(this).data("confirm-modal"); });
您会返回一个 jQuery 对象。这个 jQuery 对象和已经返回的对象是同一个$(".btn-place-order")
,这对于 jQuery 的chaining
工作理念非常重要。
链接允许您按顺序执行多个方法,而无需一遍又一遍地获取原始 jQuery 对象。例如$(".btn-place-order").on('click',...).on('hover',...);
,将允许您将两个处理程序(aclick
和 a hover
)附加到同一个元素。
on
返回任何其他内容也没有任何意义,因为它只是将处理程序附加到元素。仅仅因为您附加了一个事件处理程序,它实际上并没有给您任何价值。
现在,如果您想在事件触发时采取任何行动,您将需要在处理程序的callback
函数内部采取该行动。例如
$(".btn-place-order").on("click", function(e){ alert($(this).data("confirm-modal");) });
将提醒用户data-confirm-modal
单击的元素的属性值。但是,如果没有该alert()
部分(即原始代码的编写方式),则只会读取该值,但不会对其进行任何操作。