Tôi có mã bên dưới mà tôi sử dụng clone()
và live()
. Mã đang được tải trong hộp thoại Giao diện người dùng jQuery có liên kết. Bất cứ khi nào tôi nhấp vào liên kết đến máy chủ và điền vào hộp thoại có mã bên dưới. Trang đầu tiên đang được tải, nó hoạt động tốt, nhưng nếu tôi đóng hộp thoại và nhấp lại vào liên kết để nhận được hộp thoại số lượng các yêu cầu Ajax đang được gửi tăng lên. Lần đầu tiên tôi gửi kích hoạt thay đổi tôi chỉ gửi một yêu cầu, tôi đóng hộp thoại và tải lại và sau đó kích hoạt thay đổi, nó gửi hai yêu cầu Ajax cùng một lúc, lần thứ ba ba yêu cầu cùng một lúc và Sớm.Số yêu cầu Ajax tăng lên với jQuery trực tiếp
Bạn nghĩ vấn đề của tôi ở đâu?
<input id="TaskId" name="TaskId" type="hidden" value="18" />
<div id="MainDiv">
<div id="toClone">
<div style="display: inline;">
<select id="Tasksess">
<option value="">لطفاً کار را انتخاب کنيد</option>
<optgroup label="کار های جديد">
<option value="16"style="">q3fe</option>
<option value="18"style="">fjhv j</option>
<option value="19"style="">wref</option>
<option value="25"style="">ff</option>
</optgroup>
<optgroup label="کار های در دست اقدام">
<option value="13"style="">rr</option>
<option value="15"style="">yy</option>
</optgroup>
<optgroup label="کار های تمام شده">
<option value="14"style="">tt</option>
<option value="18"style="">fjhv j</option>
</optgroup>
</select>
</div>
<div style="display: inline;">
<select id="Statusess" name="Statusess"><option value="">لطفاً وابستگی را انتخاب کنيد</option>
<option value="1">پيشنياز</option>
<option value="2">همنياز</option>
</select>
</div>
<div style="display: none;" id="Ok">
ok
</div>
<div style="display: none;" id="noOk">
تکراری
</div>
<div id="loadingGif" style="display: none;">
<img src="/Content/Images/ajax-loader/253L.gif" alt=""/>
</div>
</div>
</div>
<script type="text/javascript">
$(document).ready(function() {
var Maindiv = $("#MainDiv");
var toClone = $("#toClone");
//$("#Statusess").each(function() {
$("#Statusess").live('change', function() {
if ($(this).find(":selected").val() != "") {
if ($(this).parent().prev().find(":selected").val() != "") {
$(this).parent().parent().find("#loadingGif").attr("style", "display: inline;");
$.ajax({
url: '/ProjectAdmin/Project/AddTaskDependency?MainTaskId=' + $("#TaskId").val() + '&DependentTaskId=' + $(this).parent().prev().find(":selected").val() + '&Status=' + $(this).find(":selected").val(),
type: 'GET',
success: function (data, status) {
if (data != "0") {
$(this).parent().parent().find("#Ok").attr("style", "display: inline;");
$(this).parent().parent().find("#noOk").attr("style", "display: none;");
}
else if (data == "0") {
$(this).parent().parent().find("#Ok").attr("style", "display: none;");
$(this).parent().parent().find("#noOk").attr("style", "display: inline;");
}
var div = $('div:eq(0)', Maindiv).clone();
Maindiv.append(div);
}
});
$(this).parent().parent().find("#loadingGif").attr("style", "display: none;");
}
}
});
//});
});
</script>
sidenote, không sửa chữa: không sử dụng 'live()' nhưng 'on()' thay vì –
Tôi đã thử mã của bạn trong Firefox và Chrome (xem http: // jsfiddle.net/PXhdj /) nhưng nó chỉ thực hiện một yêu cầu Ajax cho mỗi sự kiện 'change'. Có lẽ bạn có một số mã khác làm cho các cuộc gọi Ajax/gây ra các sự kiện 'thay đổi'? BTW Để thiết lập kiểu dáng trên các phần tử, sử dụng '.css ('display', 'inline')' thay vì '.attr ('style', ...)' –