我正在开发jQuery插件Tag-it!的实现,其中包含用于为不同类型的产品(笔记本电脑,电视,小工具等)分配属性的产品条目表单。
概念如下: 添加新产品时,首先,用户从正在添加的产品的下拉列表中选择产品类别,并触发jQuery .change()事件,进行ajax调用以获取与该类别相关的所有属性。例如,如果我添加一个电视我希望我的ajax调用填充3英寸,面板类型,hdmi输入,而如果我添加一台笔记本电脑,我希望这些输入是CPU,RAM,硬盘,屏幕等。标签 - 它!使用单词列表(在我的例子中,属性)和用于选择单词集的输入字段。 在我的情况下,对于每种类型的属性,我想填充一个单独的输入字段并将其分配/绑定到/ apply tagit插件(抱歉,我不知道如何解释它)。
使用Javascript:
<script src="../js/tag-it.js" type="text/javascript" charset="utf-8"></script>
<script>
$(function(){
// Sample1: var sampleTags1 = ["red", "green", "blue"];
// Sample2: var sampleTags2 = ["lcd", "plasma", "tft"];
var sampleTags1 = [<?=createTags('name', 'tags', 1)?>];
// createTags($name, $tags, $id) is a PHP function that returnss a list of tags for a given attribute
// Question 1: how do I place this here after a new input is added to the DOM?
$('#myTags').tagit();
//Question 2: for each input added to the DOM I need also to add this block in the javascript:
$('#allowSpacesTags1').tagit({itemName: 'item1', fieldName: 'tags1',
availableTags: sampleTags1, allowSpaces: true
});
$('#removeConfirmationTags').tagit({
availableTags: sampleTags,
removeConfirmation: true
});
});
$(document).ready(function() {
$('#cat_id').change(function(){
$.post('../includes/ajax.php', {
cat_id : $(this).find("option:selected").attr('value')}, function(data) {
$("#tagholder").html(data);
});
});
});
</script>
Ajax为每次调用返回以下内容:
<ul id="allowSpacesTags'.$row['ctid'].'"></ul> // $row['ctid'] is the ID for that attribute
表示输入标签/属性的输入字段。
在出现任何误解之前,我不会问如何在PHP中执行此操作。 我的问题是关于我可以动态添加var(如sampleTags1)的方式,并为ajax添加到DOM的每个新输入调用tagit()。如果我的问题不够明确,我会尝试提供任何必要的信息。 请查看代码注释中的问题。谢谢!
答案 0 :(得分:1)
with .live(events,handler(eventObject)) 在动态添加内容时,您无需附加或重新附加事件
EDIT 我刚刚注意到live已被弃用,而你应该使用