jquery mobile добавить событие нажатия на вложенную кнопку

у меня есть вложенные кнопки, и я пытаюсь добавить к ним события щелчка, но, похоже, это не работает.

это мой объект

<div id="ui-50">
<div class="ui-rpc" data-role="controlgroup" data-type="horizontal" >
    <input type="button" id="rpc-bor" value="<<" />
    <input type="button" id="rpc-back"  value="<" />
    <span style="margin:3px"></span>
    <input type="text" id="rpc-jump" value=""  />
    <input type="button" id="rpc-next" value=">" />
    <input type="button" id="rpc-eor" value=">>" />
    <span style="margin:20px"></span>
    <label id="rpc-current" >0</label>
    <label id="rpc-separator" >/</label>
    <label id="rpc-total" >0</label>
    <span style="margin:20px"></span>
    <label id="rpc-rpp" >0</label>
</div>
</div>

я пытаюсь добавить событие клика на кнопку id="rpc-eor", используя

$("#ui-50 .ui-rpc #rpc-eor").click(function(){
    alert("yay!");
});

но событие не сработает. в чем дело? пожалуйста помоги! заранее спасибо


person Chinchan Zu    schedule 21.07.2011    source источник
comment
Какую версию jQuery.mobile вы используете?   -  person andyb    schedule 21.07.2011


Ответы (2)


Я вижу вывод console.log, как и ожидалось, в этой демонстрации, которую я запустил в Chrome, используя jQuery.mobile 1.0b1.

<!DOCTYPE html> 
<html> 
  <head> 
     <title>Page Title</title> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
    <link rel="stylesheet" href="http://code.jquery.com/mobile/1.0b1/jquery.mobile-1.0b1.min.css" />
    <script src="http://code.jquery.com/jquery-1.6.1.min.js"></script>
    <script src="http://code.jquery.com/mobile/1.0b1/jquery.mobile-1.0b1.min.js"></script>
    <script type="text/javascript">
    $(document).ready(function() {
        $("div:jqmData(role='page')").live('pageshow',function(){
            $("#ui-50 .ui-rpc #rpc-eor").click(function(){
                console.log("yay!");
            });
        });
    });
    </script>
</head> 
<body>
<div data-role="page" id="home">
    <div data-role="header">
       <h1>Header</h1>
    </div>
    <div data-role="content">
        <div id="ui-50">
            <div class="ui-rpc" data-role="controlgroup" data-type="horizontal" >
                <input type="button" id="rpc-bor" value="<<" />
                <input type="button" id="rpc-back"  value="<" />
                <span style="margin:3px"></span>
                <input type="text" id="rpc-jump" value=""  />
                <input type="button" id="rpc-next" value=">" />
                <input type="button" id="rpc-eor" value=">>" />
                <span style="margin:20px"></span>
                <label id="rpc-current" >0</label>
                <label id="rpc-separator" >/</label>
                <label id="rpc-total" >0</label>
                <span style="margin:20px"></span>
                <label id="rpc-rpp" >0</label>
            </div>
        </div>
    </div>
</div>
</body>
</html>

Примечание. для jQuery.mobile нет document.ready(), поэтому, если вы завернули jQuery в просто document.ready(), тогда это может быть причиной вашей проблемы. Лучше привязать на $("div:jqmData(role='page')").live('pageshow',...);, чтобы гарантировать готовность страницы. Тем не менее, в этом простом случае он все еще работает без привязки .live.

person andyb    schedule 21.07.2011

Попробуйте только идентификатор

$("#rpc-eor").click(function(){
    alert("yay!");
});
person Phill Pafford    schedule 21.07.2011
comment
Благодарю. да это тоже должно работать. я обнаружил свою проблему. Я использовал альфа-версию CSS, когда я изменил ее на бета-версию, мой код заработал! Спасибо за вашу поддержку - person Chinchan Zu; 22.07.2011