2016-12-28 2 views
0

Предположим, у меня есть несколько форм с динамически генерируемым IDКак скрыть форму динамически генерируемым ID, нажав кнопку

<form id = "1"> 
    employer: <input type = "text" /> 
</form> 

<form id = "2"> 
    employer: <input type = "text" /> 
</form> 

<form id = "3"> 
    employer: <input type = "text" /> 
</form> 

Я хочу, чтобы создать кнопку, связанную с каждой формой, так что, когда я нажимаю кнопку, форма будут скрыты. Таким образом, функция onclick должна принимать идентификатор в качестве параметра. Как достичь этого?

Я попытался следующие

<script type="text/javascript"> 
var inputElement = document.createElement('button'); 
inputElement.addEventListener('click', function(){ 
    hideForm(1); 
}); 
document.body.appendChild(inputElement); 
</script> 

С hideForm определено ниже

<script> 
function hideForm(id){ 
    $("#id").hide(); 
} 
</script> 
+1

Вы еще что-нибудь пробовали? Если нет, то я рекомендую вам провести некоторое исследование .... Где кнопки для запуска функции, и поскольку они являются динамическими, где вы их создаете? Этот вопрос очень плохо спланирован. Я предлагаю вам обновить свой вопрос и включить весь соответствующий исходный код и более подробно объяснить, как функционируют функции и что вы пытались сделать до сих пор. – NewToJS

+0

Я добавил более подробную информацию. Надеюсь, что уточнит мой вопрос – Zhuo

+0

@charlietfl Я хочу скрыть любую форму, которую я хочу. Я заранее не знаю, что это за идентификаторы. В моем вопросе я просто привел пример, где я пытаюсь скрыть форму с id = "1". – Zhuo

ответ

1

Вы не очень нужны ID, если у вас есть ссылка на форму elemnt

, например:

$('form').each(function(i){ 
    var $form = $(this), 
     $button = $('<button>',{text:'Hide form # '+(i+1)}).click(function(){ 
      $form.hide() 
     }); 

    $('body').append($button); 
}) 
+0

Я думаю, что это также блестящее решение. Благодаря! – Zhuo

+0

Можно ли поставить кнопку под каждой формой? Это решение ставит все кнопки вместе – Zhuo

+0

Конечно, используйте 'after()'. Я только сделал то, что было показано в вопросе, который был не очень ясен. Http://api.jquery.com/after/ – charlietfl

0

Вы можете использовать конкатенацию в селекторе JQuery:

function hideForm(id){ 
    $("#"+id).hide(); 
} 
+0

Это работает. Спасибо – Zhuo

0

Я думаю, это то, что вы ищете.

HTML:

<form id="1"> 
    employer: 
    <input type="text" /> 
    <button>Hide</button> 
</form> 

<form id="2"> 
    employer: 
    <input type="text" /> 
    <button class="hide-button">Hide</button> 
</form> 

<form id="3"> 
    employer: 
    <input type="text" /> 
    <button>Hide</button> 
</form> 

JavaScript:

$('form').on('submit', function(e) { 
    e.preventDefault(); 
    $(this).hide(); 
}); 

JSFiddle:

https://jsfiddle.net/nikdtu/pp6j8zvx/

+0

Я думаю, что это решение работает лучше. Спасибо – Zhuo

+0

@ Zhuo: Твое приветствие! –

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