3

我编写了一个在 IE9 中工作但在 FireFox 中失败的 jQuery 代码。

该代码使用 jQuery UI 创建一个 jQuery 对话框,其中包含由 PHP 页面生成的一组项目。用户将进行选择,并且应使用 JS 函数将所选项目添加到 div 容器中。

下面是我的代码:

$(function() {
        $("#add-item-dialog").dialog({
            autoOpen: false,
                height: 600,
                width: 800,
                modal: true,

            close: function() {
                $( this ).dialog( "close" )
                    return false;
            }

        });
        $("#add-item")
            .button()
            .click(function() {
            $( "#add-item-dialog" ).load('add_item.php').dialog('open');
            });


        });
        function addItem(message){
            alert(message);
            $('#item_list').append(message + '<br>');
            $("#add-item-dialog").dialog("close")
                    return false;
        }       

函数 addItem 的按钮是用 PHP 动态创建的,如下所示:

<input type="button" name="Add Item" value="'.$item_name.'" onClick="addItem(this.value)">

预期的输出是带有项目名称的警报...然后项目名称附加到item_listdiv 标签。

IE9 会将文本附加到 div,然而,FireFox 只会显示警报然后什么都不做。

我究竟做错了什么?

4

1 回答 1

2

尝试卸载fire bug,这似乎是在做一些研究时出现的问题。

已编辑

尝试这个:

function addItem(message){
            var tmp_msg = message;
            alert(message);
            $('#item_list').append(tmp_msg + '<br>');
            $("#add-item-dialog").dialog("close")
                    return false;
        }

也许它.append()调用的位置有问题,this.value而不仅仅是获取实际值。

正如您之前写的那样alert()确实有效,所以它是.append()不起作用的函数,我认为您需要从中获取实际值this.value,然后将其传递给.append().

让我知道事情的后续。

于 2013-03-18T13:19:57.000 回答