我有以下的(只显示适用线)的JQuery找不到元素
var setUploadDoneIndicator = function(form)
{
if ($(form).find('[id$=_upload_done_indicator]').is(':checked') == false)
{
console.log("Setting indicator");
$(form).find('[id$=_upload_done_indicator]').trigger('click');
}
}
var unsetUploadDoneIndicator = function(form)
{
if ($(form).find('[id$=_upload_done_indicator]').is(':checked') == true)
{
console.log("UnSetting indicator");
$(form).find('[id$=_upload_done_indicator]').trigger('click');
}
}
$('[id$=_upload_form]').each(function (event)
{
current_form = this;
$(this).fileupload(
{
done: function (e, data)
{
setUploadDoneIndicator(current_form);
}
});
}
这正确蜱复选框的脚本,这个想法是听上的复选框的另一个JS文件的选中状态。如果我在这个脚本中的setUploadDoneIndicator()之后立即调用unsetUploadDoneIndicator(),那么它会拒绝tickbox。
然后在另一个JS文件我有
$('#pricing_ab_upload_done_indicator').change(function()
{
if ($(this).is(':checked'))
{
console.log("got checked");
unsetUploadDoneIndicator($('#pricing_ab_upload_form'));
}
});
其中要求在第一个脚本的功能,但不会取消勾选复选框。我不确定的指针是否正确传递过来,打印出的unsetUploadDoneIndicator()它打印出一个jQuery对象,这似乎是正确的接收对象时,该
if ($(form).find('[id$=_upload_done_indicator]').is(':checked')
返回true,但触发不发生,所以我不知道该元素是否被发现。
如果我更改第二个脚本以下,触发取消选中该框不会发生任何
$('#pricing_ab_upload_done_indicator').change(function()
{
if ($(this).is(':checked'))
{
console.log("got checked");
$('#pricing_ab_upload_done_indicator').trigger('click');
}
});
为什么会触发不会发生呢?
尝试更改current_form = this;到current_form = $(this); - 使用jQuery这 – Legendary 2015-03-25 10:02:10
其中current_form使用一切正常(current_form变量用于其他地方也没有显示在这里)。当从第二个脚本调用复选框的触发器函数时,在第一个脚本中调用触发器时,所有问题都可以正常运行 – BOENDAGGER 2015-03-25 10:05:39
请显示相关的HTML。 '#pricing_ab_upload_done_indicator'和'#pricing_ab_upload_form'在DOM中同样有效吗?你是否使用任何插件来替换复选框样式的原因(*如果是这样,它点击它时触发原始复选框上的更改事件*)? – 2015-03-25 10:06:10