【发布时间】:2015-09-25 10:57:24
【问题描述】:
我正在尝试创建一个事件,在单击 div-wrapper 时,它会从标签中获取数据值。要在 document.ready 上不存在的元素上绑定事件,我必须使用“on-selector”对吗?
在准备好文档时,我的 HTML 是:
<div class="dashboard_container">
<div class="ab-builder-el el-empty ui-droppable" ordering="-0.5">
<p>Plaats hier je element</p>
</div>
</div>
在拖放时,我使用 jQuery 在上面提到的 div 下方添加了一部分 HTML(使用 el-empty 类):
$(document).ready(function(){
//Initialize variables
var generatedID = 1;
var elementName = null;
//Initialize droppable elements
dropInit();
//Draggable
$('.ab-nav-element').draggable({
appendTo: '.scroll-container',
revert: 'invalid',
cursor: "move",
distance: 50,
revertDuration: 250,
helper: 'clone',
start: function(){
$('.el-empty').addClass('el-receptive');
elementName = $(this).data('original-title');
// console.log("draggable start, elementName: "+elementName);
},
stop: function(){
$('.el-receptive').removeClass('el-receptive');
elementName = null;
}
});
//Function droppable
function dropInit () {
// console.log("droppable start, elementName: "+elementName);
$('.ab-builder-el').droppable({
hoverClass : 'ui-hover',
drop: function() {
var dropContent = '<div id="'+elementName+'-'+generatedID+'" ordering="0" class="ab-builder-el panel" data-element="'+elementName+'"></div><div class="ab-builder-el el-empty" ordering="0.5"><p>Plaats hier je element</p></div>';
$(this).after(dropContent);
var divID = '#'+ $(this).next('.panel').attr('id');
generatedID++;
$(divID).load("builder-loader.php",{
elementName: elementName,
divID:divID
});
dropInit();
}
})};
});
AJAX 调用将 HTML 更改为:
<div class="dashboard_container">
<div class="ab-builder-el el-empty ui-droppable" ordering="-0.5">
<p>Plaats hier je element</p>
</div>
<div id="element_text_columns-1" ordering="0" class="ab-builder-el panel ui-droppable" data-element="element_text_columns"><div class="row" background-color:default_background_color;"="">
<div class="ab-builder-el el-empty ui-droppable" ordering="0.5">
<p>Plaats hier je element</p>
</div>
</div>
然后我喜欢做的是选择我的 div ID: "element_text_columns-1"" 并读出数据元素值。
我尝试使用很多选择器,但它们似乎都不起作用?我有以下内容:
$('.dashboard_container').children('.panel').on("click", function(){
console.log('children');
var clickedElement = $(this).data('element');
if(typeof clickedElement != 'undefined'){console.log(clickedElement);}
});
但这似乎根本不起作用。 有什么方法可以定位 div 吗?
【问题讨论】:
-
用
$('.dashboard_container').on("click", '.panel', function(){尝试一次
标签: javascript jquery html ajax jquery-ui