2011-09-22 40 views
1

我有一個功能,我們在添加動態行的同時單擊表中的addrow按鈕。 我的問題是,我必須在更改新行中的選擇列表時警告消息,但當我們使用Jquery實時單擊時它不起作用。但其工作的所有其他選擇框不動態添加使用Jquery綁定點擊。任何人都可以幫我解決這個問題嗎?JQuery live不能與Jqtransform select一起使用,而添加動態控件

在我的項目中,我們使用Jqtransform來格式化html控件。

是我迄今所做的是

$('div.jqTransformSelectWrapper ul li a').live('click',function() { 
     alert('message');} 
    }); 
+1

嘗試使用[JQuery的現場(HTTP:/ /api.jquery.com/live/)而不是'bind'。 –

+0

有一個疑問是否它的Jqtransform.js的錯誤? –

+0

這是一個Jqtransform的錯誤 –

回答

5

我已經通過執行以下操作觸發選擇列表的改變事件modyfying的Jqtransform.js文件來解決這一點。其實它的一個bug關於Jqtransform.js

如果你有我的這篇文章,你可能知道jqtransform是什麼,你可能正在努力處理dropdownlist的更改事件。

它不工作的原因是由於jqtransform使用無序列表創建了一個下拉列表,然後它隱藏了您的下拉列表。

修復其實很簡單。

打開jquery.jqtransform.js文件,找到下面這行:

/* Fire the onchange event */ 
if ($select[0].selectedIndex != $(this).attr('index') && $select[0].onchange) { 
    $select[0].selectedIndex = $(this).attr('index'); 
    $select[0].onchange(); 
} 

現在只需添加該行下面的以下內容:

/* Fire the change event */ 
if ($select[0].selectedIndex != $(this).attr('index')) { 
    $select[0].selectedIndex = $(this).attr('index'); 
    $($select[0]).trigger('change'); 
} 
0

使用jQuery delegate()代替。由於許多原因,它比live好。請使用console.log()而不是alert()進行調試!

$('div.jqTransformSelectWrapper ul li').delegate('a', 'click',function() { 
     console.log('message');} 
    }); 
+0

: - 我已經試過你的代碼,但很抱歉說它不適用於動態添加的選擇框以及已有的代碼。 –

相關問題