У меня есть этот HTML:
<div class="item">
<ul>
<li><a href="form.php" class="delete">delete</a></li>
</ul>
</div>
<div class="item">
<ul>
<li><a href="form.php" class="delete">delete</a></li>
</ul>
</div>
<div class="item">
<ul>
<li><a href="form.php" class="delete">delete</a></li>
</ul>
</div>
Когда вы нажимаете кнопку delete
, будет загружена форма с просьбой нажать да или нет .
При нажатии нет будет возвращен предыдущий html.
Проблема в этом плагине, который я сделал ниже, заключается в том, что вы можете нажать только delete
нажмите кнопку до два раза, тогда ajax не будет работать в третье время.
Почему?Как решить эту проблему?
Вы можете увидеть эту ошибку на этой ссылке .
JQuery:
$(document).ready(function(){
$(".delete").delete_string({targetElement:'.item'});
});
(function($){
// Attach this new method to jQuery
$.fn.extend({
// This is where you write your plugin's name
delete_string: function(options) {
// Set the default values, use comma to separate the settings, example:
var defaults = {
targetElement: '.item-needle',
targetSlibing: false
}
var options = $.extend(defaults, options);
var o = options;
// When you create the click function you can assign that element to a variable and reference it within:
var $cm = this.click(function(e){
// Set the varible.
var object = $(this);
var object_path = object.attr('href');
var object_parent = object.parents('ul');
var html_parent = object_parent.html();
var object_superparent = object.parents(o.targetElement);
var target_element = object.parents(o.targetElement);
var target_slibing = target_element.next(o.targetSlibing);
//alert(target_slibing);
// Load the form.
object_parent.load( object_path, function(){
// Attach click to the no button.
$("input[type=button][name=no]",object_parent).click(function(){
// Get the html content back.
object_parent.html(html_parent);
// Attach the delete plugin back in.
$($cm.selector,object_parent).delete_string({targetElement:o.targetElement});
return false;
});
});
return false;
});
}
});
})(jQuery);
Проблема возникает из этой строкинасколько я могу узнать:
$($cm.selector,object_parent).delete_string({targetElement:o.targetElement});
было бы хорошо, если бы я просто сделал это,
$($cm.selector).delete_string({targetElement:o.targetElement});
, но это прикрепит delete plugin
к всем остальнымсуществующая кнопка удаления на экране, не так ли?