[英]Javascript/jquery .click() not triggering function
我有一個表格,其中在點擊每一行中的鏈接時會觸發一些功能:
代碼的相關部分是:
$('.my_table').inplacerowedit({
url: myurl,
});
在 inplacerowedit.js 文件中,我有:
(function($) {
$.fn.inplacerowedit = function(options) {
var ops = $.extend({}, $.fn.inplacerowedit.defaults, options);
$(this).find(ops.editbuttonselector).on('click', function(e) {
... }
ops.editbuttonselector = 'a.edit'
我的表格每行都有一個編輯鏈接,它通常工作正常。 我的問題是新創建的行。
這是我創建一行並將其添加到表中的方法:
new_row = null
getNewRow = function() {
if (new_row == null){
new_row = $("<tr>");
columns = {'name':'','type':'','value':'','edit':'','delete':''}
for (var column in columns)
new_row.append( $("<td>").addClass(column).text(columns[column]));
links = ['edit','delete']
for (var i=0;i<links.length;i++){
link = links[i]
a = $("<a href='"+link+"' class='"+link+"'>").text(link);
new_row.find("."+link).append(a)
}
}
return new_row
};
$("#addRowAndEdit").click(function(e){
e.preventDefault();
var row = getNewRow();
$(".my_table").append(row);
new_record = $('.my_table tbody>tr:last');
new_record.find('a.edit').click(); //this is the line that is not working.
....
}
更新:
如果我做new_record.find('a.edit').on('click', alert('ok'));
,警報功能有效,但未調用另一個。
有任何想法嗎? 謝謝
使用事件委托,以便新添加的行由附加到表的處理程序處理,而不是將其附加到每個單獨a
元素,為此,替換inplacerowedit.js
的以下行:
$(this).find(ops.editbuttonselector).on('click', function(e) {
對於這個:
$(this).on('click', ops.editbuttonselector, function(e) {
已編輯
如果您使用的是 1.6+ 的最新 jquery 版本,那么您應該試試這個:
new_record.find('a.edit').live('click',function(){
// All your desired stuff here
});
試試看這是否適合你。
Just because you are dynamically creating the rows
,對於這種情況.live()
事件處理程序很有用。
你可以在這里找到更多信息: http : //api.jquery.com/live/
我必須進行 2 個更改:一個是 nelson 建議的(出於某種原因,我第一次嘗試他的建議時,它破壞了現有鏈接)和另一個像這樣:new_record.find('a.edit')[0 ]。點擊()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.