2015-09-02 8 views
0

Я создаю динамический неупорядоченный пользовательский вид списка. В каждом элементе есть одна кнопка. Я создаю элементы списка следующим образом:Динамически созданная кнопка автоматически активируется

for (i = 0; i < arrayID.length; i++) { 
    var listElement = '<li class="has-form">' + 
     '<div class="row collapse">' + 
     '<div class="small-1 columns" style="margin: 5px">' + 
     '<img src="image/twitter.png">' + 
     '</div>' + 
     '<div class="small-6 columns small-only-text-center">' + 
      '<p>' + 
       '<i>' + arrayText[i] + '</i>' + 
      '</p>' + 
     '</div>' + 
     '<div class="small-3 columns">' + 
      '<button type="button" class="large-10" onclick="' + onClickViewButton() + '">view</button>' + 
     '</div>' + 
     '<div class="small-1 columns">' + 
      '<input id="checkbox1" type="checkbox">' + 
      '</div>' + 
     '</div>' + 
    '</li>'; 
    $("#myList").append(listElement); 
} 

Код кнопки клик:

function onClickViewButton() { 
    alert('hello'); 
} 

Но, к сожалению, когда страница загружается, то нажатие кнопки обжигают и не работает на фактический щелчок кнопки. Пожалуйста, помогите.

+1

Заменить 'OnClick = " '+ onClickViewButton() +' "' 'с OnClick =" onClickViewButton()"' – gmo

+0

Объяснение выше исправление в том, что функция JS вызывается там. Он просто должен быть строкой, пока DOM не интерпретирует элемент. –

ответ

3

Где у вас есть:

onclick="'+onClickViewButton()+'" 

вам нужно иметь:

onclick="onClickViewButton()" 

вместо этого.

Ваш текущий код вызывает функцию onClickViewButton в вашем объявлении, когда то, что вы действительно хотите сделать, - просто использовать его в качестве ссылки на функцию, чтобы впоследствии ее вызывали по адресу onclick.

+1

По-прежнему нужен '()': D – tymeJV

+0

@tymeJV Nvm. Вы правы, спасибо! –

+0

@tymeJV Большое спасибо. Решил проблему с вашим решением – user3577669

0

Попробуйте с этим фрагментом:

Если вы CONCAT имя функции с скобкой, то она будет рассматриваться как выполнение функции, следовательно, функция будет вызвана.

for (i = 0; i < arrayID.length; i++) { 
    var listElement = '<li class="has-form">' + 
    '<div class="row collapse">' + 
    '<div class="small-1 columns" style="margin: 5px">' + 
    '<img src="image/twitter.png">' + 
    '</div>' + 
    '<div class="small-6 columns small-only-text-center">' + 
    '<p>' + 
    '<i>' + arrayText[i] + '</i>' + 
    '</p>' + 
    '</div>' + 
    '<div class="small-3 columns">' + 
    '<button type="button" class="large-10" onclick="onClickViewButton()">view</button>' + 
    '</div>' + 
    '<div class="small-1 columns">' + 
    '<input id="checkbox1" type="checkbox">' + 
    '</div>' + 
    '</div>' + 
    '</li>'; 
    $("#myList").append(listElement); 
}