1

我一直在反对这个问题,这反映了我基本缺乏理解。

我想收集一个类的所有实例,然后能够有一个函数来理解哪个元素实例调用了它。

我创建了一个小提琴http://jsfiddle.net/AKa4s/,它不起作用,只是为了解释我的问题。

就像这样,我收集所有 div 元素并为其分配一个函数: $(".square").each(writeColorpanel);

然后在那个函数中我需要调用另一个函数。下一个函数似乎完全不知道是谁调用的。我需要来电显示(笑话)。

问题是我最终对不同的 div 运行相同的计算,并重复该函数,以便我可以根据结果将 css 应用于每个 div。

4

2 回答 2

1

你这样做太复杂了。

jQuery(document).ready(function($) {


// run the function for every div
$(".square").each(function(i) {

    $('.output').eq(i).val(multiplyColor($(this).val()));
    //Show the output to the 1st/2nd/3rd output (that's where eq comes from
    //As for the value, I call a function and pass a parameter to do the calculations

    //Now if you want to call another function you need to pass the element itself as a parameter;
    alertMyId($(this));
});

function alertMyId(elem) {
   //elem has now all the same properties as if you were in the "each" function      
    alert(elem.attr('id'));

}

//Ideally if you just want to calculate something, you should just pass along the value you want to calculate
function multiplyColor(value) {
  var color = 3;
  return  value * color;
}

}); 检查这个小提琴

此外,您不能拥有具有相同 ID 的不同 html 元素。改用类。

于 2012-08-06T14:13:35.110 回答
0

是这样的吗:

$(function() {
    $(".square").each(function(i,e) {
        writeColorpanel(i,e);
    });

    function writeColorpanel (i, elem) {
       color=3;        
       onColorChange(elem, color);
    }

    function onColorChange(elem, color) {
       var m = elem.value
       var q = m*color;
       $('#output_'+elem.id).val(q);
    }
});

小提琴

于 2012-08-06T14:10:21.703 回答