Jquery移动点击事件不起作用 - DOM Prob?

时间:2012-06-06 21:55:49

标签: jquery checkbox click

试了几个这样的组合,附上最新的代码集。简而言之,我将我的javascript从一个单独的文件运行到html,而我想要做的就是设置一些代码,以便在更改复选框时运行一些逻辑来监视它。

尝试通过.document.userdetails.signal观看,#signal(为此添加了类),只是简单的信号。

我很感激一些指导,因为我在同一个html文件中查看了很多例子,所以我认为这就是我试图解决按钮的方式。

<form id="userdetails" name="userdetails" action="javascript: savesettings()" >
       <p>
        <p>
        <div data-role="fieldcontain">
          <fieldset data-role="controlgroup" data-type="horizontal">
            <input name="signal" type="checkbox" class="custom" id="signal" value="1" checked="true" />
            <label class="signal" for="signal">Traffic Data</label>
            </legend>
</div>

和Javascript

   $(".document.userdetails.signal").click(function(e){
   e.preventDefault();
   alert('signal clicked!');
});

由于

人族

编辑 - 最后使用此示例 - Click event not firing in jQuery Mobile?

EDIT2 - http://forum.jquery.com/topic/calling-a-script-when-button-clicked添加$(文件).ready所以现在$(document).ready(“。document.userdetails.signal”)。click(function(e){.......当我打开应用程序时似乎注意到了变化 - 我想我现在需要找到正确的目标,因为Jquery会重新创建复选框等。

编辑3 - Jasons解决方案虽然目标周围的其他贡献者的评论很有用。

$(function() {
   $("#userdetails").on("change","#signal",function(eventObj) {
        //do code here. 
        eventObj.preventDefault();
   });
});

2 个答案:

答案 0 :(得分:1)

$(".document.userdetails.signal")正在寻找包含class="document userdetails signal"等三个类的元素。

尝试$("#signal")

$(function() { // shorthand for doc ready
    $(document).on('click','#signal',function(e) { // use .on in jquery 1.7
        alert('hello');
        e.preventDefault();
    });
});

答案 1 :(得分:1)

click事件适用于复选框,但通常如果您想在更改时运行javascript,请改用change事件。我已经包含了一个使用change的示例,如果您要复制粘贴选择框或文本字段的代码

$(function() {
   $("#userdetails").on("change","#signal",function(eventObj) {
        //do code here. 
        eventObj.preventDefault();
   });
});

..编辑以回应评论..

    $(function () {
        $("#trafficdata").toggle(function () {
            alert('First handler for .toggle() called.');
        }, function () {
            alert('Second handler for .toggle() called.');
        });


        $("#userdetails").on("click", "#signal", function (eventObj) {

            eventObj.preventDefault();

            $("#trafficdata").click();

        });
    });