首页 > 解决方案 > 用 'e' Jquery 连接字符串

问题描述

我无法将字符串与“和”连接起来。

我想向 Jquery 发送一个命令,单击一个具有我作为参数传递的标题的 div。

需要获取这个才能在 jquery 函数中执行:

jQuery('div[title=\"titletoclick\"]').trigger( 'click' );

我有这个功能:

function clickOnMarker() {
    let queryString = window.location.search;
    let urlParams = new URLSearchParams(queryString);
    let spotNameOriginal = urlParams.get('markerName');
    let spotName = spotNameOriginal.slice(1,-1);
    let elementToClick = "'div[title=\'" + spotName + "'\]'"
    jQuery(elementToClick).trigger( 'click' );     
}

执行函数时出现错误,因为变量的值是

'div [title =' Sintra Spot ']'

我需要将“”放在标题中,而不是“”并删除空格 TRIM()。

最好的问候和感谢

标签: javascriptjquerystring-concatenation

解决方案


让我们一次解决一个问题。

可以通过调用来实现对字符串的修剪String.prototype.trim,所以我们将有

[...]
    let spotName = spotNameOriginal.slice(1,-1);
    // Added trim here
    spotName = spotName.trim();
[...]

其次,我们处理报价。由于您要查找的字符串格式为 'div[title="<string here>"]',因此我们可以使用给定的引号...并根据需要对其进行转义。请记住,要在单引号括起来的字符串中转义单引号,我们必须在它们前面加上一个斜杠,而双引号不需要转义;相反的情况适用于双引号括起来的字符串。
因此我们可以写

    // let elementToClick = "'div[title=\'" + spotName + "'\]'" OLD SYNTAX
    let elementToClick = "'div[title=\"" + spotName + "\"]'";

让我添加一些东西......这种字符串对于 jQuery 选择器匹配没有用处。正确的不会有封闭的单引号......
因此,正确的语法应该是

    // We can use the single quote as delimiter to simplify
    let elementToClick = 'div[title="' + spotName + '"]';

(我们也可以通过使用反引号来使用模板字符串,但让我们保持简单)。

加入一切,我们有

function clickOnMarker() {
    let queryString = window.location.search;
    let urlParams = new URLSearchParams(queryString);
    let spotNameOriginal = urlParams.get('markerName');
    // Add trim... Concatenating so as to reduce the boilerplate
    let spotName = spotNameOriginal.slice(1,-1).trim();
    // Build correct selector template
    let elementToClick = 'div[title="' + spotName + '"]';
    jQuery(elementToClick).trigger( 'click' );     
}

推荐阅读