2012-08-06 62 views
1

我一直在跑這個問題,這反映了我基本的理解不夠。通過jquery函數傳遞元素

我想收集一個類的所有實例,然後能夠有一個函數,它理解哪個元素實例調用它。

我創建了一個小提琴,http://jsfiddle.net/AKa4s/,這不起作用,只是試圖解釋我的問題。

就是這樣,我收集所有的div元素&給它分配一個函數: $(「。square」)。each(writeColorpanel);

然後在那個函數中我需要調用另一個函數。下一個功能似乎完全不知道是誰打來的。我需要來電顯示(笑話)。

問題是,我最終運行相同的計算不同的div,並重復該函數,以便我可以將css應用於每個div基於結果。

+2

您不能擁有多個具有相同'id'屬性值的元素。 – 2012-08-06 14:06:06

+1

'.doChange()'方法來自哪裏?它是一個插件嗎? – 2012-08-06 14:08:03

+0

我的猜測是「onColorChange」函數內的「this」值引用了「當前元素」。 – 2012-08-06 14:10:33

回答

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); 
    } 
}); 

FIDDLE

+2

請解釋你改變了什麼。 – 2012-08-06 14:11:11

+0

他將元素傳遞給onColorChange函數,這是您的「調用者ID」:) – 2012-08-06 14:14:36

+0

我明白。我想我以前曾嘗試過這種方式,但它並不奏效,但您的例子顯然確實如此。謝謝,我會在我有很長的icky noob代碼中嘗試。 :) – 2012-08-06 14:30:51

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; 
} 

}); 檢查fiddle

此外,您不能有相同的ID不同的HTML元素。改用類。

+1

添加了代碼,以防死鏈接或jsFiddle處於維護狀態,以防止其他用戶在將來查看代碼。 – Nope 2012-08-06 14:21:16

+0

該Ids是一個錯字,對不起。我的問題是,如果你必須調用另一個函數呢?在第一個函數中,您可以訪問elem,因爲您正在將函數附加到它。但是,現在如果每個「方形」都有一個值,並且您需要調用另一個函數對該值執行計算,然後將這些值重新放回到您開始使用的div中,那該怎麼辦? – 2012-08-06 14:23:21

+0

@JenniferMichelle你只需要傳遞元素(或稱爲ID)作爲參數。我會用一個例子來更新我的答案。 – 2012-08-06 15:44:29