0

我目前正在为 jQuery Mobile 实现一个空白内容 SimpleDialog。这是html:

<li>
   <a href="#page1" id="searchdialog" data-theme="" data-icon="search">Search Routes
   </a>
</li>

这是jQuery:

<script type="text/javascript">
        $(document).delegate('#searchdialog', 'click', function() {
          $('<div>').simpledialog2({
            mode: 'blank',
            headerText: 'Route Search',
            headerClose: true,
            blankContent : 
            '<div id="content" data-role="content"><label>Enter Your Search:</label><div data-role="fieldcontain"><fieldset data-role="controlgroup">' +
            '<label for="textinput7">Start</label><input id="start" placeholder="" value="" type="text"/></fieldset></div>'+
            '<div data-role="fieldcontain"><fieldset data-role="controlgroup"><label for="textinput9">End</label>'+
            '<input id="end" placeholder="" value="" type="text" /></fieldset></div>'+
            '<a data-role="button" data-transition="fade" data-theme="b" href="#page6" data-icon="search" data-iconpos="left" onclick="alert($("#start").val(),$("#end").val())">Search</a>'
          })
        });
    </script>

我一生都无法弄清楚导致此错误的原因:

Uncaught SyntaxError: Unexpected token }

该错误仅在单击 Search Routes 链接时发生,这使我相信这是 jquery 中的错误。有趣的是,如果我成功了

onclick="警报()"

代替

onclick="alert($("#start").val(),$("#end").val())"

然后它可以工作,但我需要有一个其他的变体:

onclick="location.href = "/search/?start=" + $("#start").val() + "&end=" + $("#end").val()"

关于如何实现这一点的想法?任何快速而肮脏的解决方案都会奏效。谢谢

4

1 回答 1

2

你的线:

'onclick="alert($("#start").val(),$("#end").val())"'

导致错误。您的 onclick 属性中有冲突的引号(以及非字符串逗号!)

您最好创建一个 hidden / display:none 元素,其中包含此硬编码信息,然后简单地引用它。

或在创建 html 的时间分配处理程序(类似于您已经委托的处理程序)

编辑:基本上采取这个:

'<a data-role="button" data-transition="fade" data-theme="b" href="#page6" data-icon="search" data-iconpos="left" onclick="alert($("#start").val(),$("#end").val())">Search</a>'

而是这样做:

'<a class="some-wonky-alert" data-role="button" data-transition="fade" data-theme="b" href="#page6" data-icon="search" data-iconpos="left" >Search</a>'

$('a .some-wonky-alert').on('click', function()
{
alert($("#start").val() + $("#end").val());
});

在您方便时按委托进行季节

编辑2:或者当然你可以尝试转义引号 - 但虽然这可能有效 - 它不会解决正在从事的不良做法:)

于 2012-04-23T21:11:55.937 回答