Jquery避免外部链接

Jquery避免外部链接,jquery,hyperlink,attr,Jquery,Hyperlink,Attr,大家好我有个问题请大家帮忙, 我有一个网站,在代码中动态地为我的链接指定了Id和href属性 $('.portfolio_item').each(function(i) { $(this).find('a').attr('href' && 'href*="#"', '#work_' + i); $(this).find('.podrt_descr').attr('id', 'work_' + i); }); 现在,当我使用wordpres

大家好我有个问题请大家帮忙, 我有一个网站,在代码中动态地为我的链接指定了Id和href属性

$('.portfolio_item').each(function(i) {
        $(this).find('a').attr('href' && 'href*="#"', '#work_' + i);
        $(this).find('.podrt_descr').attr('id', 'work_' + i);
    });
现在,当我使用wordpres时,我会尝试向外部站点添加新链接,但所有链接都没有 当我将链接添加到外部站点时,我的链接会获得内部链接,如
#work I
,所以有人能告诉我如何告诉我的jquery代码,我在开始时给出了这些代码,避免外部链接,只使用内部链接,我尝试使用

 $('.portfolio_item').each(function(i) {
        $(this).find('a').attr('href*="#"', '#work_' + i);
        $(this).find('.podrt_descr').attr('id', 'work_' + i);
    });

为了避免,但它不起作用,因此我将非常感谢您的任何建议谢谢您

看起来您误解了示例中的
&
运算符<代码>a和b表示“如果a是,使用b;如果不是,使用a”。字符串
'href'
是真实的,因此代码中的
'href'&&&'href*=“#”
计算结果为字符串
'href*=“#”
。这是jQuery的
.attr
方法的无效参数,因为属性名称中不允许使用特殊字符,如
*
”,当我尝试运行代码时,它引发了InvalidCharacterError

相反,您可以使用<代码> [HeRF^=“y]”[/Cord]来仅选择从字符“代码> > < <代码> >的URL链接。这不一定只匹配内部的链接-取决于您所考虑的“内部”的意思-但对于上下文来说可能已经足够了。 使用“以选择器开头”属性将使代码如下所示:

$('.portfolio_item').each(function(i) {
    $('body').find('a[href^="#"]').attr('href', '#work_' + i);
    $(this).find('.podrt_descr').attr('id', 'work_' + i);
});

如果您还想使用相对URL匹配链接,或者使用绝对URL匹配指向您自己网站的链接,则需要更多的逻辑来处理。但这可能足以让您开始。

看起来您误解了示例中的
&&
运算符。
a&&b
表示“如果a是,请使用b;如果没有,请使用“.”字符串
'href'
是真实的,因此代码中的
'href'&&&&'href*=“#”
的计算结果为字符串
'href*=“#”
。这是jQuery的
方法的无效参数。attr
方法不允许在属性名称中使用特殊字符,如
*
”,当我试着运行你的代码时,它引发了一个InvalidCharacterError

相反,您可以使用
a[href^=“#”]
仅选择URL以字符
#
开头的链接。这不一定只匹配内部的链接-取决于你所认为的“内部”意味着什么,但是对于你的上下文来说可能足够了。 使用“以选择器开头”属性将使代码如下所示:

$('.portfolio_item').each(function(i) {
    $('body').find('a[href^="#"]').attr('href', '#work_' + i);
    $(this).find('.podrt_descr').attr('id', 'work_' + i);
});

如果您还想使用相对URL匹配链接,或者使用绝对URL匹配指向您自己站点的链接,则需要更多的逻辑来处理。但这可能足以让您开始学习。

$(this).find('a[href*=“#”]').attr('href','#work#i)不幸的是,这个解决方案不起作用。当我像你的报价一样修复时,我的链接断了。谢谢你。我添加了图片。也许你可以更好地理解我的问题,更好地做一个解释,解释你的代码是什么,预期结果是什么code@MohamedYousef使用
a[href*=“#”]
(the)将匹配包含字符串“#”的URL在任何位置,即带有。任何URL都可以有一个片段,因此这不会将选择仅限于内部链接。
$(this).find('a[href*=“#”]').attr('href','#work#i)不幸的是,这个解决方案不起作用。当我像你的报价一样修复时,我的链接断了。谢谢你。我添加了图片。也许你可以更好地理解我的问题,更好地做一个解释,解释你的代码是什么,预期结果是什么code@MohamedYousef使用
a[href*=“#”]
(the)将匹配包含字符串“#”的URL在任何位置,即带有。任何URL都可以有一个片段,因此,这并没有将选择限制为仅限于内部链接。感谢您的建议,但不幸的是,此解决方案不起作用。我以前尝试过此解决方案,我的项目中有与我的代码冲突的库。我需要解决方案哪一个将检查href是否有#work#I它将拒绝此解决方案,并使用类似此的外部链接确定,你在用什么图书馆?您尝试了哪些步骤来解决此问题?您需要向我们展示您的代码,并为我们提供更多的上下文。感谢您的建议,但不幸的是,此解决方案不起作用我以前尝试过,我的项目中有库与我的代码冲突我需要解决方案哪一个将检查href是否有#work#I它将拒绝它并使用类似此的外部链接OK,你在用什么图书馆?您尝试了哪些步骤来解决此问题?您需要向我们展示您的代码,并为我们提供更多的上下文。