我從前一篇文章轉發此問題,因爲當我最初問它時,它不清楚。我不確定我實際需要什麼,導致我的反應變得不適用。YUI Datatable:rowsPerPageChage事件:獲取下拉ID在更改
原文:YUI Datatable - Get ID of DOM Element after page has loaded and use it in other YUI events
我的問題是這樣的:
我有一個YUI的數據表。我每行都有一行下拉菜單。我需要創建一個事件或事件處理函數,或利用存在的函數來處理以下事件:
當(每次)顯示每頁行數的下拉列表發生更改時,事件處理程序應該獲取下拉並將其傳遞給另一個函數以用作參數。我的數據表有兩個rowPerPageDropDown(aka rppDD)元素。我需要這兩個功能。
優選地,它也會在頁面加載時執行此操作,但現在這是額外的功勞。
我知道「top」rppDD元素的id當前是「yui-pg0-0-rpp12」,但是我的問題從這樣一個事實延伸出來,如果我向該頁面添加任何代碼,該id將會改變(「 -rpp13「或類似的東西)。這拋棄了我的其他功能。所以我想在運行時只是抓住id(不管它是什麼),並用它來代替硬編碼。
第二個函數會在下拉改變後立即運行。它將使用下拉列表的ID來獲取當前選定的值,並將其分配給一個變量以與第三個函數一起使用。
這是我到目前爲止:在前面的線程中,有人建議我使用事件rowsPerPageChange。這隻在一定程度上起作用。在該事件處理程序中放置一個簡單的「hello world」警報,證明它僅在頁面加載時發出警報。每當我點擊並更改下拉到其他東西,它不再提醒。
下面是函數(S)和代碼,我使用測試:
var getRppValue = function() {
YAHOO.util.Event.addListener("rowsPerPageChange", getRppValue.prototype.handleOnAvailable());
}
var rppDD_ID = "";
getRppValue.prototype.handleOnAvailable = function() {
alert("hello world");
alert(this.id); //should alert "yui-pg0-0-rpp12"
//rppValue = this.id;
}
var rppEvent = new getRppValue();
近,我可以告訴這個事件僅觸發/被處理時,最初的頁面加載。那時,第一次警報像預期的那樣提醒「hello world」。第二個提示顯示「未定義」。其意圖是第二次警報應該提醒rppDD元素的任何id(「yui-pg0-0-rpp12」)。
作爲參考,我計劃傳入id的函數如下。它的意圖就像我上面提到的那樣,將rppDD元素的當前值賦給變量oRPP。然後調用endDrag()函數(利用oRPP):
如果我硬編碼的ID將是:
function getRPP_0(){oRPP = g("yui-pg0-0-rpp12").value;endDrag();};
我希望它通過動態:
function getRPP_0(){oRPP = g(rppDD_ID).value;endDrag();};
任何幫助/建議表示讚賞。
是的。我也需要在這裏麪包裝: 'function Rdy(id){ YAHOO.util.Event.onContentReady(id,this.handleOnAvailable,this); }; Rdy.prototype.handleOnAvailable = function(me){**上面的答案在這裏**};' – quotemyname