有一个包含链接的页面。
点击链接后,我想要Javascript(或其他)检查链接是否包含(例如奶酪)
如果是,那么模式应该启动显示链接。
示例:
http://mylink/just-normal/ - 点击后,应该正常进行
http://mylink/with-cheese/ - 点击此按钮后,应启动模态
http://mylink/another-link/ - 点击后,应该正常进行
http://mylink/other-link/ - 点击后,应该正常进行
模态应显示完整链接。
感谢任何帮助。
以下是我到目前为止所做的事情。
我的具体问题是: 问题:当我点击网站上的任何链接时,会打开一个模态。它似乎是针对所有链接,而不仅仅是包含特定单词的链接。
jQuery(function () {
jQuery(document).on('click', jQuery('a') , function(event){
var e = event;
event.preventDefault;
var that = event.target;
if(jQuery(that).is("span")){
that = jQuery(event.target).parent();
}
if(jQuery(that).attr('href')){
var url = jQuery(that).attr('href').toLowerCase();
if(jQuery.browser.webkit || jQuery.browser.mozilla && (url.indexOf('.my.test.here/') >=0)) {
ie_pointer(e, that);
}
else if (jQuery.browser.webkit && || jQuery.browser.mozilla (url.indexOf('something.else/') >=0)){
var overall = jQuery('.overall');
ie_pointer(e, overall, that);
}
}
});
});
function ie_pointer(event, obj, that){
event.preventDefault();
if(that){
var url = jQuery(that).attr('href');
}
else{
var url = jQuery(obj).attr('href');
}
jQuery('<div class="modal-backdrop"></div>').hide().appendTo(document.body).fadeIn();
jQuery(obj).after('<div class="modal-content" style="padding:10px"><h3 style="color:#333">Please copy the blue link below into Internet Explorer</h3><p style="font-size: 1.2rem; color:#333">This form is currently unavailable in Firefox & Chrome.</p><h4 style="color: #0099cc; max-width: 400px; word-wrap:break-word;">'+url+'</h4><i onclick="close_modal()" class="icon-remove"></i></button></div>');
}
function close_modal(){
jQuery(".modal-backdrop").fadeOut(function(){jQuery(this).remove()});
jQuery('.modal-content').fadeOut(function(){jQuery(this).remove()});
}
答案 0 :(得分:0)
您的点击事件处理程序已设置为事件委派,因此它仅在parallel -j90 script.sh < url_amendements_15.txt
为event.target
时才会响应:
<a>
然而,在处理程序内部,你有这个:
jQuery(document).on('click', jQuery('a') , function(event){
由于您if(jQuery(that).is("span")){
that = jQuery(event.target).parent();
}
设置为that
,因此event.target
条件永远不会是if
,因此我不确定您要完成的是什么它
当true
元素具有<a>
时,函数的其余部分会运行,但是也有href
个条件不合理:
if
如果浏览器为if(jQuery.browser.webkit ||
jQuery.browser.mozilla && (url.indexOf('.my.test.here/') >=0)) {
ie_pointer(e, that);
} else if (jQuery.browser.webkit && ||
jQuery.browser.mozilla (url.indexOf('something.else/') >=0)){
var overall = jQuery('.overall');
ie_pointer(e, overall, that);
}
或者true
且该属性包含您的测试字符串,则您的第一个条件为webkit
。当浏览器为mozilla
时,为什么不想测试字符串?
您的webkit
条件执行相同的操作,但由于您忘记了else if
,因此您遇到语法错误:
&&
也许更重要的是,为什么你关心它是什么浏览器? JQuery deprecated the browser
flags in version 1.9 ,因为它们基于jQuery.browser.mozilla (url.indexOf('something.else/') >=0))
,这一直是浏览器嗅探的不可靠方式。
这里有一个简洁的示例,即使用标准 CSS attribute selector 获取包含navigator.userAgent
中某个字符串的链接做一件事而其他所有人做其他事情强>:
href
&#13;
var url = "console";
// Simply use the attribute wildcard selector to make sure
// you are only selecting links you care about in the first place
$("a[href*='" + url + "']").on("click", function(evt){
evt.preventDefault();
alert("You clicked a link that I care about!");
});
&#13;