2013-08-29 12 views
7

在JavaScript中,我正在使用click事件來更改圖表數據。以下是點擊事件的方法。單個JavaScript單擊事件中的多個ID

$('#pro1').click(function() { 
      chart.series[0].update({ 
       data: pro1 
      }); 
     }); 
     $('#pro2').click(function() { 
      chart.series[0].update({ 
       data: pro2 
      }); 
     }); 
     $('#pro3').click(function() { 
      chart.series[0].update({ 
       data: pro3 
      }); 
     }); 

我需要在一個事件中縮小這三個點擊事件,意味着我想寫一個點擊事件來處理這個ID。有些東西就像下面的代碼。

$('#pro'+i).click(function() { 
chart.series[0].update({ 
    data: pro+i 
}); 
}); 


我不知道如何做到這一點沒錯。上面的代碼是不正確的,這只是我缺乏JavaScript的知識。

+1

使用一個類和魔術「this」:) –

+0

如果'pro'將是一個數組,那麼它會容易得多 –

+0

是的,使用一個類和「我」將是$(this)。指數(); – Romaindr

回答

8

我建議創建對象和使用類選擇所述元件時,點擊的元素的id檢索輔助對象的相應屬性的值:

var pros = { 
    pro1: '...', 
    pro2: '...' 
}; 

$('.pros').click(function() { 
    chart.series[0].update({ 
     data: pros[this.id] 
    }); 
}); 
+0

感謝它對我來說工作正常 – MAR

3

使用班級。

$('.pro').click(function() { 
chart.series[0].update({ 
    data: $(this).attr('id'); 
}); 
}); 

,然後在每個#PRO1,#PRO2,#PRO3元素添加一個類的 '親'

+0

wtf投票的理由嗎? – Niall

+0

你有'數據:pro + i'而沒有爲'pro'或'i'定義變量。 Downvote刪除。 –

+0

乾杯,是一項正在進行的工作。實際上是在它的中間。 – Niall

7
$('#pro1,#pro2,#pro3').click(function() { 
    chart.series[0].update({ 
     data: $(this).attr('id'); 
    }); 
}); 

更新代碼

$('#pro1,#pro2,#pro3').click(function() { 
    chart.series[0].update({ 
     data: window[this.id] 
    }); 
}); 
+2

'proN'是一個不是字符串的變量。如果變量是全局的'window [this.id]'將起作用。 – undefined

+0

你真的認爲OP想傳遞字符串作爲圖表數據嗎? –

0

你可以給所有的您的元素是一個類名,並在jQuery中使用:eq()選擇器。

2
$("*[id^=pro]").click(function() { 
    chart.series[0].update({ 
     data: $(this).attr('id'); 
    }); 
}); 
29

嘗試這種情況:

var that = this; 
$('#pro1,#pro2,#pro3').click(function() { 
    chart.series[0].update({ 
     data: that[$(this).attr('id')]; 
    }); 
}); 
相關問題