2009-03-04 4 views
0

Я динамически генерирую якорный тег, используя jQuery. Я добавил атрибут onclick, но когда я нажимаю на ссылку, onclick не срабатывает.Почему ящик привязки, сгенерированный JQuery, не запускает его событие onclick?

Я генерация ссылки следующим образом:

$(document).ready(function() { 

    var attributes = { 
     "id": "xxx", 
     "onclick": "alert('xxxx');", 
     "href": "https://localhost/widget/TabTest.aspx#" 
    }; 
    var link = $.create("a", attributes); 
    $(link).append("xxxx"); 
    $("#WidgetContainer").append(link); 
}); 
+0

Стоит отметить, что $ .create не является частью jQuery. Я думал, что просто не знаком с этим. –

ответ

4

Установите атрибут щелчка с функцией() Нажмите Jquery в.

var attributes = { 
    "id": "xxx", 
    "href": "https://localhost/widget/TabTest.aspx#" 
}; 
var link = $.create("a", attributes); 
$(link).append("xxxx").click(function(){ alert("HELLO"); }); 
$("#WidgetContainer").append(link); 

То, что вы сделали, скорее всего, работать в некоторых браузерах, но не другие (я имел эту работу в FF но не в IE). Как правило, если jQuery имеет функцию, чтобы что-то сделать, используйте его.


EDIT: В ответ на комментарий Адама Бэкстрема по вопросу, который, по моему мнению, я бы предложил альтернативу. Когда я сделал это в прошлом, я сделал это так:

$("#someplace").wrapInner("<a href='#'></a>"); 
$("#someplace a").click(function() { 
    alert("Hello"); 
}); 


EDIT 2: Из комментариев к этому посту, как сделать это в одной строке (не всегда в лучшую идею):

$("<a id='xxx' href='https://localhost/widget/TabTest.aspx#'>xxxx</a>") 
     .click(function() { alert("Hello"); }) 
     .appendTo($("#WidgetContainer")); 
+0

Работал как шарм! Благодарю. –

+0

Да здравствует чрезмерно краткий jQuery; почти всегда есть способ написать его полностью на одной строке (нужно ли это или нет): $ ("xxxx") .click (function() {alert ("Hello");}). appendTo ($ (" #WidgetContainer ")); – patridge

1

Если вы используете JQuery 1,3 или выше, вы могли бы использовать привязки, чтобы прикрепить событие щелчка к любым < А > меткам добавить на странице «живое» событие. Например:

$('a').live('click', function (evt) { 
    alert('Hello'); 
    evt.preventDefault(); 
}); 
var link = $.create('a', { 
    'id' : 'xxx', 
    'href' : 'http://localhost/' 
}); 
$('#container').append(link); 
Смежные вопросы