2014-10-17 65 views
3

下面的代码工作正常,在Chrome和Firefox,但并不在IE浏览器正常工作:SCRIPT16385:未实现

if (jQuery.trim(jQuery("#"+element_id.name).val()) != "" && jQuery.trim(jQuery("#"+element_id.name).val()) != "0") { 
    jQuery("#filters-box").append('<span id="filter-'+ element_id.name +'" class="toggler"><button class="button white" onClick="removeFilter(\'filter-' + element_id.name + '\')"> ✖ </button>' + document.getElementById(element_id.name + "_caption").value + ' -> ' + document.getElementById(element_id.name).value + '</span>'); 
} 

虽然它可以附加HTML代码,并将其呈现在页面上正确,但其onClick事件会生成上述错误消息。

+0

你可以做一个[小提琴](http://jsfiddle.net)我们可以看到这个问题? – Banana 2014-10-17 05:54:18

+1

+ removeFilter究竟做了什么?你能显示它的源代码吗? – 2014-10-17 05:56:01

+0

/* 移除过滤器 */ 函数removeFilter(filter_id){ var elementid = filter_id.replace(“filter-”,“”); removeFilterBefore(elementid); //删除过滤器关键字和值 删除过滤器[elementid.replace(“list_”,“”)]; //从过滤器框中删除过滤器按钮 jQuery(“#”+ filter_id).remove(); //启用其各自的下拉列表 jQuery(“#”+ elementid).prop(“disabled”,false); removeFilterAfter(elementid); } – Agilox 2014-10-17 05:59:44

回答

1

如果您使用jQuery预编译字符串,您可以附加事件,就好像它已经在DOM中一样(基本上)。这是清洁,不唐突,应该由jQuery的支持所有浏览器:

if (jQuery.trim(jQuery("#"+element_id.name).val()) 
    != "" && jQuery.trim(jQuery("#"+element_id.name).val()) != "0") { 

    // precompile to a temp var 
    var $temp = jQuery('<span id="filter-'+ element_id.name +'" class="toggler"><button class="button white"> ✖ </button>' + document.getElementById(element_id.name + "_caption").value + ' -> ' + document.getElementById(element_id.name).value + '</span>'); 

    // this works fine 
    $temp.find('button.button.white').on('click', function() { removeFilter('filter-' + element_id.name); }); 

    jQuery("#filters-box").append($temp); 
} 
+0

您的代码工作正常! – Agilox 2014-10-17 06:07:32

+0

@Agilox相关知识!正确的答案/ +1将不胜感激:) – 2014-10-17 06:08:19

+0

在相同的版本或不同的版本?使用jQuery具有将浏览器抽象出来的优点,因此无论使用哪种浏览器(或所述浏览器的版本),如果jQuery支持它,它都可能一直工作。 – 2014-10-17 06:14:23

4

奇怪的是我试图改变你的函数名“removefilter我的”和它的作品精美绝伦 请查收变化

var element_id = { 
 
    name: "test", 
 
    "test_caption": "_caption" 
 
}; 
 

 
function rmvFilter(ele) { 
 

 
    alert(ele); 
 
} 
 

 
var html = '<span id="filter-' + element_id.name + '" class="toggler">'; 
 
html += '<button class="button white" id="button" onClick="rmvFilter(\'caption_' + element_id.name + '\');"> ✖ </button></span>'; 
 
jQuery("#filters-box").append(html);

我没有找到代码中的任何错误,除了唯一的那个名字的确切组合并不奇怪在IE9工作

0

谢谢你,Kartheek。我在IE9中遇到了一个名为“removeFilter(event)”的函数(它在Firefox和Chrome中运行正常)并且更改函数名也适用于我。

我只能假设这是IE的一种内置函数,因为IE9没有实现,因此浏览器会调用错误的函数来引发其未执行的错误。

+0

请不要添加“谢谢”作为答案。相反,当你有足够的声望时,你可以[upvote有帮助的答案](http://stackoverflow.com/help/privileges/vote-up)或[奖励有用的答案赏金](http://stackoverflow.com/帮助/奖金)。 – 2015-05-08 21:25:58