Я намерен использовать модуль Bootstrap Popover в качестве подтверждения для события удаления, так что при нажатии на кнопку <button>
вместо простого запуска функции открывается всплывающее окно, которое позволяет пользователь подтвердить или увольнять действие.Bootstrap Popup - присоединить событие к кнопке для popover динамически
Следует отметить, что среда представляет собой построенный в однопользовательском режиме веб-приложение с одной страницей ~ mvc, где элементы добавляются динамически (я, таким образом, заранее не знаю количество элементов и не могу жестко указать действия для каждого элемента)
в текущей ситуации (без пирога) я сделать что-то похожее на это, чтобы вызвать прямое (без конформации) действия:
$view.on('click', '.deleteButton', function() {
var id = $(this).attr('data-id');
api.delete('someUrl' + id, successFunction);
}):
Если кнопка будет есть arkup похож на это:
<button class="deleteButton" data-id="2">Delete me!</button>
Однако теперь я хотел бы добавить шаг подтверждения (например, «Вы уверены, что хотите удалить эту великолепную кнопку? (Y/N)») и подумали о том, как использовать bootstrap popover.
После мозгового штурма, то, что я придумал, было такой стратегией, как следующее. Это не оптимальное решение (оптимальным решением было бы расширить модуль popover, чтобы я мог передать подтверждениеFunction и cancelFunction для popover).
Во-первых, я должен был бы инициировать popovers.
$view.find('.deleteButton').popover({
title: 'Are you sure?', //Example title
html: true, //Essential for the html to work as expected
selector: '.deleteButton', //Allow ajaxing in of new elements
container: '.viewName', //So that the popovers reside w/in the current view and thus can be bound to $view (a jQuery object for the view)
content: [...], //Two <button>s with a specified class, e.g. .viewName__deleteButton--popover
});
Во-вторых, я хотел бы связать событие с кнопками внутри пирог
$view.on('click', '.viewName__deleteButton--popover', function() {
var id = ??; // Here comes the troubling part - how do I get the ID of the clicked button? How can I target the original button? If I can do that, I think it would solve everything.
api.delete('someUrl' + id, successFunction);
});
Проблема, которая возникает это как таргетинг изначально нажал кнопку?
Единственный soultion, который я могу придумать, что не очень аккуратно на все, чтобы сделать что-то вроде этого:
var popoverId = $(this).parents('.popover').attr('id'); //returns popoverXXXXXX
var parentElement = $view.find('[aria-describedBy="' + popoverId + '"]');
Это работает, но это очень грязное решение и не чувствую себя «хорошо».
Есть ли способ сделать это более аккуратно? Предпочтительно я мог бы определить общую функцию, такую как $element.confirmationPopover({popoverSettings...}, confirmationFunction, declineFunction);
, которая может использоваться в нескольких случаях.
(PS: Я не мог понять, краткое название для этого Q, советы, как всегда ценится)
Спасибо @ j-santosh, но я боюсь, что я должен подождать 18 часов, прежде чем я смогу это сделать :) – Wilhelmw
о, я не знаю, что :) –