0

我正在开发 jQuery 插件Tag-it!带有一个产品输入表单,用于为不同类型的产品(笔记本电脑、电视、小工具等)分配属性。

概念如下:添加新产品时,首先,用户从下拉列表中选择要添加的产品的产品类别,并触发 jQuery .change() 事件进行 ajax 调用以获取所有相关的属性到那个类别。例如,如果我添加一台电视,我希望我的 ajax 调用为英寸、面板类型、hdmi 填充 3 个输入,而如果我添加一台笔记本电脑,我希望这些输入是 cpu、ram、hdd、屏幕等。标记-它!使用单词列表(在我的例子中是属性)和用于选择单词集的输入字段。就我而言,对于每种类型的属性,我想填充一个单独的输入字段并将其分配/绑定到/应用 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 中做到这一点。我的问题是关于我可以动态添加像 sampleTags1 这样的 var 并且还为通过 ajax 添加到 DOM 的每个新输入调用 tagit() 的方式。如果我的问题不够清楚,我会尽力提供任何必要的信息。请查看代码注释中的问题。谢谢!

4

1 回答 1

1

http://api.jquery.com/live/

使用 .live( events, handler(eventObject) ) 动态添加内容时,您无需附加或重新附加事件

编辑我刚刚注意到 live 已被弃用,而不是你应该使用

.on() http://api.jquery.com/on/

于 2012-12-06T18:24:00.507 回答