如何在Onclick上获取选择器的变量

时间:2014-08-13 10:00:56

标签: javascript jquery html css

当选择器分配给变量时,我需要在onclick上获取该变量名称我已创建Fiddle作为示例

 var $main_img1 = $("<div/>").addClass('add1').appendTo($('#main_container'));
 var $main_img2 = $("<div/>").addClass('add2').appendTo($('#main_container'));

 $main_img1.click(function()
 {
     get_id()
 });

 $main_img2.click(function()
 {
      get_id()
 });
 function get_id(event)
 {
      console.log($(this))
      alert('i need to get selector variable on click')
 }

当我点击相应的div时,输出应为 $ main_img1 $ main_img2

3 个答案:

答案 0 :(得分:2)

这是一个解决方案,但不确定您将如何使用它

使用Array获取变量名称。

JS

    var arr = new Array();
    arr[0] = '$main_img1';
    arr[1] = '$main_img2';

    var $main_img1 = $("<div/>").addClass('add1 add').appendTo($('#main_container'));
    var $main_img2 = $("<div/>").addClass('add2 add').appendTo($('#main_container'));

      $main_img1.click(function()
                 {
                    get_id($(this))
                 });

       $main_img2.click(function()
                 {
                    get_id($(this))
                 });
    function get_id(event)
    {
        alert(arr[$('.add').index(event)]);
    }

更新:无需数组。

    function get_id(event)
    {
        ///var temp = '$main_img' + (parseInt($('.add').index(event)) + 1);
        var temp = '$main_img' + (parseInt($('#main_container > div').index(event)) + 1);
        alert(temp);
        console.log(eval(temp));
    }

Updated DEMO

答案 1 :(得分:0)

我建议一个解决方法..看看它是否对你有帮助。在相应的div中添加一个隐藏元素,并将变量名称作为文本添加到其中。我稍微修改了你的方法get_id(),以从你的div隐藏元素中获取变量名。

function get_id()
{
   console.log($(this))
   var selVar= $(this).parent().find('input:hidden:first').text(); 
   alert('selector variable' + selVar);
}

这对你有用。

答案 2 :(得分:0)

你可以从你点击它的元素的类中猜测并使用反身性。

要了解您点击它的元素,只需使用event.target,其中eventclick函数中传递的变量。请查看此fiddle以获取示例。

get_id方法现在看起来像这样:

function get_id(event) {
    console.log(event.target)
}

event.target返回的值与您声明的变量($main_img1$main_img2)返回的值相同。