我有一个隐藏的select元素,其中包含对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中的inspect元素,我没有收到任何错误。
答案 0 :(得分: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/
答案 1 :(得分:0)
使用与全局函数名称和元素标识符相同的名称将导致Chrome,Safari和IE(而非Firefox)出现问题。
尝试将事件处理函数名称更改为“moreDetailsTwo”或其他内容。
Chrome,Safari和IE为每个具有“id”值的元素创建全局符号(即window
属性)。我怀疑这会破坏你对“moreDetails2”功能的绑定。