我可以从jquery事件函数中获取值吗?
我想得到这样的东西:
function Init() {
var my_variable = $some_object.click(function() {
var my_variable = 'value';
return my_variable // I need to get the variable value from click event
// but I don't know ways to do it
});
console.log(my_variable); // I want to have possibility to use the value here
}
答案 0 :(得分:1)
没有
设置事件处理程序的函数将在事件处理程序运行之前完成运行。
答案 1 :(得分:1)
不,你不能这样做。您只能捕获在处理程序范围之外定义的变量中的值:
function Init() {
var my_variable = '';
$some_object.click(function() {
my_variable = 'value';
});
console.log(my_variable); //Prints empty string
$some_object.trigger('click');
console.log(my_variable); //Prints 'value'
}
答案 2 :(得分:0)
你的问题的答案是否定的!您无法从事件处理程序返回值。 现在接下来让你好奇的是如何获取一些来自事件处理程序本身的数据。这就是事件传播的来源,并传递了一些数据。
在小提琴下面的结帐,显示如何在按钮点击的事件处理程序中创建的数据用于任何自定义目的。
以下是简单的html和可理解的javascript代码
<div id='parent'>
<button id='test'>CLick</button>
</div>
var a=document.getElementById('test');
a.addEventListener('click', function(){
var str='sample';
//creating a custom event with name 'build' and passing object as data
var event = new CustomEvent('build', { 'detail': str });
//dispatches the event which invokes the affected listeners
this.dispatchEvent(event);
})
//Listening for 'build' event
document.getElementById('parent').addEventListener('build', getData, true);
function getData(e){
alert(e.detail);
}
链接共享,可以帮助人们理解这个概念。 dispatchEvent&amp; createCustomEvent。希望有助于回答你的问题! 添加了一些评论&amp;这些链接将帮助那些不了解这些功能的人。使用的行为。
答案 3 :(得分:0)
如果我理解这个问题,也许你可以做这样的事情......
变量= 5用于2个函数中......每个函数都用它的值来做... ...
最后一个函数使用前两个函数的总数并再次执行某些操作。
所以关键是你可以访问2个总计变量并在第三个函数中使用它们...
只要你将你的函数变量设置为全局...所以不要把VAR放在它前面。
如果你在它前面设置var你就是说你的变量是私有的... <登记/>
更改原始变量的值,所有值都更改....
variable = 5; // this is a global variable
source = $('div#een h2'); // put your source here
function Init(){
source.on('click', function(){
Total1 = variable * 2;
console.log(Total1); // It outputs 10
});
};
Init();
function Init2(){
source.on('click', function() {
Total2 = variable * 5;
console.log(Total2); // It outputs 25
});
};
Init2();
function Init3(){
source.on('click', function() {
Total3 = Total1 * Total2; // here we use the 2 Totals...
console.log(Total3); // outputs the Total of both totals... should be 250
});
};
Init3();