我有一个点击处理函数,其中嵌套了另一个输入处理函数。我需要在内部函数的末尾访问(this)data-filter属性的值。但是数据过滤器属于外部函数类。我想从内部函数访问和操作它。即使这些函数之间的所有变量都相互开放,如果可能的话。
// click handler to check if a set of links are clicked
$optionLinks.click(function () {
// click handler to continually check for keyboard input
jQuery('input').bind('input propertychange', function() {
jQuery('#output').html(jQuery(this).val());
// grab user input, put in a variable
var txtinput = jQuery('#output').html();
// check if user input matches any tags
if (jQuery.inArray(content, tags) >= 0) {
// if it does overwrite the data-filter attribute
jQuery('#gallery_filter').attr('data-filter', txtinput);
// set this variable which is used by the outer function
var selector_<?php echo $unique_id;?> = jQuery(this).attr("data-filter");
}
});
//do other stuff
});
答案 0 :(得分:2)
您可以将外部元素保存到变量中:
jQuery('input').bind('input propertychange', function() {
var that = this;
并在其他函数中使用它:
jQuery(that).attr("data-filter");
答案 1 :(得分:0)
以下是处理此问题的两种常见模式:
之一:
function outerFunction() {
var outerThis = this; // Now we can access outerFunction via outherThis \o/
(function innerFunction() {
doSomethingWith(outerThis);
outerThis === this; // False
})();
}
2:
function outerFunction() {
var outerThis = this;
(function innerFunction() {
doSomethingWith(this);
outerThis === this; // True
}).bind(this)();
}