0

我想将一个变量从一次单击传递到另一个单击函数。

不确定是否可能。我之前做了一些研究,但找不到合适的解决方案。

$('.clickme').click(function () {
    var whichid = $(this).attr("id");
    alert(whichid);
});

$('#button').click(function () {
    //get the clicked id value from previous click function
});

这是我的小提琴

http://jsfiddle.net/squidraj/g7xNv/

4

5 回答 5

2

无论如何,您可能都在周围$().ready()调用的范围内,因此您可以毫无问题地执行此操作:

var whichid = 0;

$('.clickme').click(function () {
    whichid = $(this).attr("id");
});

$('#button').click(function () {
    alert(whichid);
});
于 2013-10-29T12:45:46.317 回答
2

您可以使用.data()来存储单击了哪个元素

$('.clickme').click (function() {
    var whichid = $(this).attr("id");
    $('#button').data('whichid', whichid);
    alert(whichid);
});

$('#button').click (function() {
    alert( $('#button').data('whichid'));
});

演示

于 2013-10-29T12:47:19.873 回答
1

最简单的方法是使用全局变量:

$('.clickme').click(function () {
    var whichid = $(this).attr("id");
    window["whichid"] = whichid;
    alert(whichid);
});

$('#button').click(function () {
    alert(window["whichid"] || "not clicked yet");
});

更新了小提琴

于 2013-10-29T12:44:16.903 回答
0

您可以定义一个全局变量,并为此变量设置值。例如你可以这样做:

var globalVar = null;

$('.clickme').click(function () {
    var whichid = $(this).attr("id");
    globalVar = whichid
    console.log(whichid); // console.log() is more better than alert to debug
});



$('#button').click(function () {
        //get the clicked id value from previous click function
        console.log(globalVar);
   });
于 2013-10-29T12:43:39.963 回答
0

或者,您可以添加一个隐藏的输入字段来存储最近点击的 id 的值:

作为

HTML:

<input type="hidden" name="last_clicked_id" id="last_clicked_id">

现在将最后点击的 id 保存到隐藏元素中

JS:

$('.clickme').click(function () {
    var whichid = $(this).attr("id");
    alert(whichid);
    $('#last_clicked_id').val(whichid);
});


$('#button').click(function () {
    //get the clicked id value from previous click function
    var last_clicked = $('#last_clicked_id').val();
    alert('last_clicked = '+last_clicked);
});
于 2013-10-29T12:49:20.103 回答