2012-07-21 51 views
0

我想發送多個參數到JQUERY事件functions.For發送一個數據我把它的價值attr在html代碼。發送多個動態參數到jquery事件函數

<li id="<?php echo 'v'.$value['vehicleid'] ?>" value="<?php echo $value['vehicleid']; ?>" > 

並獲得與$(this).val()在JQuery的事件函數的數據,但我不知道我怎麼可以將多個PHP數據將jQuery事件函數!
這些數據是動態的,由php代碼生成。

回答

0

你不能在一個li使用VAL()它應該是在表單元素輸入用於其中有一個名爲value

有效的屬性對於李,你可以使用數據屬性

<li id="<?php echo 'v'.$value['vehicleid'] ?>" data-vehicleid="<?php echo $value['vehicleid']; ?>" > 

及用途:

var vehicleId = $(this).data('vehicleid'); 

傳遞多個數據可以單獨每個ID與像一些字符「 - 」:

<li id="<?php echo 'v'.$value['vehicleid'] ?>" data-vehicleids="<?php echo $value['vehicleid1']. '-' .$value['vehicleid2']; ?>" > 

應該產生這樣的:

<li id="1234" data-vehicleids="1234-3456-5678" > 

然後做

var vehicleIdsArray = $(this).data('vehicleids').split('-'); 

只是讓用於分離 - 確保charachter不用於車輛IDS

這會幫助你:

從Resig的
$(document).ready(function(){ 
    $('ul#list li').click(function(e){ 
    var vehicleId = $(this).attr('vehicleid'); 
    var vehicleName = $(this).attr('vehiclename'); 
    var vehicleColor = $(this).attr('vehiclecolor'); 
    return false; 
    }); 
}); 

報價:

我覺得什麼是最誘人的這整個規範是 你不必等待任何瀏覽器來實現任何爲了 到開始使用它。通過今天開始在您的HTML元數據前綴中使用數據前綴,您可以安全地知道它將在未來繼續工作 。將HTML 5驗證程序 集成到完整的W3C驗證程序時,您的站點已經符合 (假設您已經有效使用HTML 5並使用HTML 5 Doctype )。

+0

Thanks.I有多個數據可以使用它們中的每個數據嗎?像這樣data-id =「<?php echo $ id?>」data-name =「<?php echo $ name?>」等等.Ang在jquery中用data(dataattrname)獲取它們的值?如果我有一個php數組,我不知道該數組中的哪些數據如何發送此數組數據到JQUERY事件函數? – user1344766 2012-07-21 21:49:57

+0

@ user1344766我已經更新了答案,'事件'不清楚,我假定它是一個點擊li。 – sabithpocker 2012-07-21 21:58:49

+0

thanks.This技巧只適用於支持html5的瀏覽器,或者可以在不支持html5的瀏覽器上運行? – user1344766 2012-07-21 22:33:14

0

我不是百分之一百確定你所屬的事件是哪一種。但是你可以在函數內傳遞多個參數(.. HERE ..)。它應該用逗號分隔。就像這樣。

$('selector').change(function(arg1,arg2,arg3){ 
      alert(arg1+arg2+arg3); 
    }); 

在這個例子中,我使用選擇器'選擇器'的更改事件。

+0

我要發送數據時,對li.But .hover事件我不不知道如何發送多個數據到.hover事件!如何在li中嵌入數據並獲取它們在JQuery函數中?或者,如何將多個數據發送到JQUERY事件函數。這些數據是動態的,並由php產生 – user1344766 2012-07-21 21:56:09

1

我偶然發現了類似的東西。

嘗試使用html5自定義數據屬性。

John Resig(jquery和一般的javascript忍者之王)首次發佈了關於它的here

這樣:

<li id="vehicle<?php echo 'v'.$value['vehicleid'] ?>" data-vehicle="<?php echo $value['vehicleid']; ?>" > 

使用jQuery。數據函數然後訪問它。見http://api.jquery.com/data/

如果要添加大量的數據,我建議使用對象文本

{ vehicleId: <?php echo 'v'.$value['vehicleid'] ?>, 
vehicleName: <?php echo 'v'.$value['vehicleName'] ?>} 

在jQuery的網站上的例子。

+0

只是對sabithpocker的回答發表評論 - 避免使用1234-3456類型的數據會更好更明確您需要使用split(「 - 」))並使用對象文本來將數據提取出來。 – Trujllo 2012-07-21 22:18:59

+0

Thanks.But如果用戶瀏覽器不支持html5,那麼如何使用這個技巧? – user1344766 2012-07-21 22:21:27

0

我認爲你必須創建一個函數來處理該事件

function handleEvent(data-vehicleid,data-vehiclename,data-vehiclename) 
    { 
     alert(data-vehicleid + data-vehiclename + data-vehiclename); 
    } 

然後在您的李,

<li onmouseover="handleEvent(<?php echo $variable1;?>,<?php echo $variable2;?>,<?php echo $variable3;?>)">Renault</li>