2013-11-21 3 views
0

У меня есть объект JavaScriptJQuery событий в JavaScript Object

function A() 
{ 
    this.ini = function() 
    { 
     $('#test').html('<button id="click" >Hi</button>'); 
    }  

    $('#click').on('click',function(){ 
     alert('Hi'); 
    }); 
} 

http://jsfiddle.net/G2MUE/1/

Но у меня есть проблема, событие OnClick не используется.

Спасибо за вашу помощь

+0

Параметр '# click' элемент еще не существует, когда вы пытаетесь привяжите к нему обработчик. –

+0

Хорошо, я нахожу, http://stackoverflow.com/questions/10920355/attaching-click-event-to-a-jquery-object-not-yet-added-to-the-dom – Ajouve

+0

Что вы думаете об этой функции ? Кажется, бессмысленно создавать что-то с жестко закодированными значениями. – Johan

ответ

-1

Вы пытаетесь привязать обработчик к элементу, который не существует. Попробуйте что-то вроде этого:

http://jsfiddle.net/pdT24/

function A() { 
    this.ini = function() { 
     $('<button id="click" >Hi</button>') 
      .click(clickfn) 
      .appendTo('#test'); 

    } 

    var clickfn = function (e) { 
     alert('Hi'); 
    }; 
} 
var a = new A(); 
a.ini(); 

Альтернативой было бы событие делегации с on():

$('#test').on('click', '#click', function() { ... }); 
+1

Почему downvote? –

+1

Кто-то получил downvote счастливым и сделал это на все должности – epascarello

+0

Yah для меня тоже .. – Gautam3164

6

Попробуйте

$(document.body).on('click', "#click" ,function(){ 
    alert('Hi'); 
}); 

Вы подключаете обработчик перед элементом является в DOM.

0

Вам не нужно положить его в initializeation.Try как

function A() 
{  
    $('#test').html('<button id="click" >Hi</button>');    
    $('#click').on('click',function(){ 
     alert('Hi'); 
    }); 
} 
A(); 

Смотреть это DEMO

+1

почему нужно его вниз .. ?? Любая причина – Gautam3164

Смежные вопросы