0

我有一个隐藏的选择元素,带有对 javascript 函数的 onchange 调用。

当用户单击我页面上的按钮时,我运行以下代码并显示我的选择表单:

$("#moreDetails2").show();
$('#moreDetails2').trigger("create");

然而,在它显示之后,它不会执行它的 JavaScript 函数。我已经测试过它没有隐藏并且可以正常工作。

<div id = \"moreDetails2\">  
                    <select  onchange=\"moreDetails2($userID,'$id')\">

                        <option value=\"0\">More Options</option>
                        <option value=\"1\"> View Taste Profile</option>
                        <option value=\"2\"> Add Taste Tags</option>

                    </select>
                </div>

查看 chrome 中的检查元素,我没有收到任何错误。

4

2 回答 2

1

jQuery Mobile 不能很好地使用 onchange="... 或 onclick="... 事件绑定,您需要像这样手动完成:

$(document).on('pagebeforeshow', '#index', function(){       
    $(document).on('click', '#test-button', function(){     
        $("#moreDetails2").show();
        $("#moreDetails2 select").css('display','block').selectmenu('refresh');
    });    

    $("#moreDetails2 select").on( "change", function(event, ui) {
        moreDetails2('aaaa');
    });    
});

function moreDetails2(text) {
    alert(text);
}

这是从您的代码创建的一个有效的 jsFiddle 示例:http: //jsfiddle.net/Gajotres/DpdXY/

于 2013-02-08T14:35:58.387 回答
0

使用与全局函数名称和元素标识符相同的名称会在 Chrome、Safari 和 IE(不是 Firefox)中引起问题。

尝试将您的事件处理函数名称更改为“moreDetailsTwo”或其他内容。

windowChrome、Safari 和 IE为每个具有“id”值的元素创建全局符号(即属性)。我怀疑这会破坏您对“moreDetails2”函数的绑定。

于 2013-02-08T13:48:00.233 回答