Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Jquery中手动触发事件_Javascript_Jquery - Fatal编程技术网

Javascript 在Jquery中手动触发事件

Javascript 在Jquery中手动触发事件,javascript,jquery,Javascript,Jquery,我在JQuery中动态创建一个输入框列表,并在选中它们时有一个事件通知我 $("#myDiv").on("change", "input[type='checkbox']" , function(){ if(this.checked){ alert("HERE"); //... }else{ alert("THERE"); //... } }); 当页面加载并且所有复选框都显示时,我可以通过选中/取消选中来输入。问题是,我希望根据后端逻辑

我在JQuery中动态创建一个输入框列表,并在选中它们时有一个事件通知我

$("#myDiv").on("change",  "input[type='checkbox']" , function(){
   if(this.checked){
     alert("HERE");
     //...
   }else{
    alert("THERE");
    //...
   }
});
当页面加载并且所有复选框都显示时,我可以通过选中/取消选中来输入。问题是,我希望根据后端逻辑的结果,首先检查其中的一些。所以我想在初始加载之后进入这个函数

我看了
.trigger()
.click()
但是,这两种方法似乎都不管用


是否有其他途径可以进入此回调?

在这种情况下,您可以创建一个命名函数,而不是使用匿名函数,并在需要时调用它

var myFunction = function(){
   if(this.checked){
     alert("HERE");
     //...
   }else{
    alert("THERE");
    //...
   }
}

$("#myDiv").on("change", "input[type='checkbox']", myFunction );

// triggering the function manually:
$("#myDiv input[type='checkbox']").each( myFunction );

当myDiv发生更改时,您的代码会被触发,并且您会传递一个复选框列表。这是mydiv。为什么不使用:

$('input:checkbox').each(function(){// Now this is referring your checkbox});

如果要在复选框上显示选中,只需将
checked
属性设置为
checked

<input type='checkbox' checked='checked' />

$('').trigger('change');

按名称分别定义函数,然后在为每个已签出的项目加载页面后调用该函数

function onChange(this) {
    if(this.checked){
        alert("HERE");
        //...
    }else{
        alert("THERE");
        //...
    }
}
监视复选框更改的代码将变为:

$("#myDiv").on("change",  "input[type='checkbox']" , function() {
    onChange(this);
});
因为我不知道代码是什么样子,所以我编写了一些代码来打印复选框,并定义默认情况下要选择的复选框。它是PHP,但是这个概念应该适用于任何服务器端语言

<select>
<?php
$items = array(
    'value1' => 'text1',
    'value2' => 'text2',
    'value3' => 'text3'
);

$selected = array(
    'value1' => true,
    'value3' => true
);

foreach ($items as $value => $text) {
    $selectedAttr = isset($selected[$value]) && $selected[$value]) ?
        " selected='selected'" : '';
    echo "<option value='$value'$selectedAttr>$text</option>";
}
?>
</select>


我不知道你要回答什么。您可以创建一个JSFIDLE吗?由于您正在附加到
change
事件,您是否尝试过
.change()
?嗯,在firebug中,“this”似乎指的是整个文档。然而,在我的$document.ready中,我现在有了你的$(“#myDiv”)。on(“change”,“input[type='checkbox']”,myFunction);每当我选中一个复选框时,它都会起作用。但是,$(“#myDiv input[type='checkbox']);不调用所述函数。您还需要将其置于$(document).ready()中。否则DOM还没有加载,元素也不存在。
$("#myDiv").on("change",  "input[type='checkbox']" , function() {
    onChange(this);
});
<select>
<?php
$items = array(
    'value1' => 'text1',
    'value2' => 'text2',
    'value3' => 'text3'
);

$selected = array(
    'value1' => true,
    'value3' => true
);

foreach ($items as $value => $text) {
    $selectedAttr = isset($selected[$value]) && $selected[$value]) ?
        " selected='selected'" : '';
    echo "<option value='$value'$selectedAttr>$text</option>";
}
?>
</select>
$().ready(function() {
    var defaultSelected = [ "[option name='value1']" , "[option name='value3']" ];

    for (var i=0; i < defaultSelected.length; i++) {
        $(defaultSelected[i]).each(onChange);
    }
});
<?php

// $selected was defined in the previous code section

// Create selectors that will select each checkbox option
$selectors = array();
foreach ($selected as $s) {
    array_push($selectors, "[option name='$s']");
}

// Produces string: [ "[option name='value1']" , "[option name='value3']" ]
$jsSelectorArray = '[ "' . implode('" , "', $selectors) . '" ]';

echo "
$().ready(function() {
    var defaultSelected = $jsSelectorArray;

    for (var i=0; i < defaultSelected.length; i++) {
        $(defaultSelected[i]).each(function() {
            onChange(this);
        });
    }
});
";

?>