У меня есть этот скрипт здесь, я не знаю, как передать эту переменную, чтобы отобразить ее.
function show(a) {
this.name = a;
$("#box").show();
$(document).on("click","#box",function() {
alert(this.name);
} );
}
я знаю, что могу просто предупредить об этом
оповещения (а);
но в моем реальном коде у меня есть динамическая переменная soi, которая должна передавать тит и отображать ее с использованием этого метода:
оповещения (this.name);
Вы можете использовать bind
:
function show(a) {
this.name = a;
$("#box").show();
$(document).on("click","#box",function() {
alert(this.name);
}.bind(this) );
}
bind
возвращает функцию, привязанную к определенному контексту. Таким образом, у вас есть правильный контекст. Когда вы изменяете name
свойства, объект контекста, ваше предупреждение показывает правильное name
.
См. Https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind
Также хорошая статья о Function.prototype.bind
: http://coding.smashingmagazine.com/2014/01/23/understanding-javascript-function-prototype-bind/
Поскольку определяется в замыкании, вы можете просто использовать везде, вместо того, чтобы пытаться работать с a
a
this
.
this
не одинаков в этих двух местах .... Я думаю, что вы можете просто использоватьfunction show(a) { $("#box").show().click(function () { alert(a); }); }