【发布时间】:2014-08-19 11:45:58
【问题描述】:
Failed example 用于动态创建的对话框
我得到了这个 script 来将 AJAX 内容加载到一个 jQuery UI 对话框中,该对话框的类在小提琴示例中被命名为 .open_dia。问题是我在 (window).bind(“load”, function(){} event 中将 .open_dia 动态加载到页面中,所以我想知道如何从
var $link = $(this).one('click', function(){....
为了某种效果
var $link = $('.area').one('click','.open_dia', function() {
这样我就可以将事件绑定到动态创建的元素.open_dia 以打开对话框。任何帮助将不胜感激。
这是原始代码:
$(document).ready(function() {
var $loading = $('<img src="http://upload.wikimedia.org/wikipedia/commons/4/42/Loading.gif" alt="loading" class="loading">');
$('.open_dia').each(function() {
var $dialog = $('<div></div>')
.append($loading.clone());
var $link = $(this).one('click', function() {
$dialog
.load($link.attr('href') + ' #content')
.dialog({
title: $link.attr('title'),
width: 500,
height: 300
});
$link.click(function() {
$dialog.dialog('open');
return false;
});
return false;
});
});
});
失败的代码:
$(document).ready(function(){
$('button').one('click',function(){
$(this).next('.area').append('<a class="open_dia" title="this title" href="http://jsfiddle.net/">Click</a>');
});
var $loading = $('<img src="http://upload.wikimedia.org/wikipedia/commons/4/42/Loading.gif" alt="loading" class="loading">');
$('.open_dia').each(function() {
var $dialog = $('<div></div>')
.append($loading.clone());
var $link = $('.area').one('click','.open_dia', function() {
$dialog
.load($link.attr('href') + ' #content')
.dialog({
title: $link.attr('title'),
width: 500,
height: 300
});
$link.click(function() {
$dialog.dialog('open');
return false;
});
return false;
});
});
});
示例 HTML:
<button>Append open_dia</button>
<div class='area'></div>
【问题讨论】:
-
你为什么尝试使用
.one()而不是.on()? -
@DevlshOne,原来使用
one来确保AJAX 内容只加载一次。我也想这样做。
标签: javascript jquery html ajax jquery-ui